roslynator
roslynator copied to clipboard
Roslynator commandLine can't catch the analysis of 'Microsoft.CodeAnalysis.CSharp.NetAnalyzers'
First, Thanks to the great Roslynator project.
I try to analyze and fix both Roslynators and external analyzers like Microsoft.CodeAnalysis.CSharp.NetAnalyzers using Roslynator commandline tool v 0.2.0 for a project net472
in visual studio 2019, I get the next analysis warning
Warning CA1014 Mark assemblies with CLSCompliant
Warning RCS1012 Use explicit type instead of 'var'.
Warning RCS1012 Use explicit type instead of 'var'.
Message IDE1006 Naming rule violation: Prefix '_' is not expected
Message RCS1163 Unused parameter 'args'.
Message IDE0060 Remove unused parameter 'args'
Message RCS1118 Mark local variable as const.
Message IDE0059 Unnecessary assignment of a value to 'yy'
I get the path of the MS analyzers used in vs 2019 to pass them to the commandline:
C:\Program Files\dotnet\sdk\5.0.402\Sdks\Microsoft.NET.Sdk\targets\..\analyzers\Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll
C:\Program Files\dotnet\sdk\5.0.402\Sdks\Microsoft.NET.Sdk\targets\..\analyzers\Microsoft.CodeAnalysis.NetAnalyzers.dll
Then run the commandline:
set ms="C:\Program Files\dotnet\sdk\5.0.402\Sdks\Microsoft.NET.Sdk\targets\..\analyzers\"
Roslynator analyze %project% -v diagnostic -p CodeAnalysisRuleSet=%rule% --file-log %log% --file-log-verbosity diag --analyzer-assemblies %ms%
Roslynator can't catch IDExxxx, CAxxxx of Ms analyzers The same result for the project net50
The log is attached logs.log
I use Roslynator.CommandLine
I thought so. Could you try to use Roslynator.DotNet.Cli instead? I tested it that should work and you should see CAxxxx diagnostics.
Install Roslynator.DotNet.Cli with following command:
dotnet tool install -g roslynator.dotnet.cli
Regarding the IDE diagnostics please see this comment.
I will try and feedback
Thanks for help.
I run roslynator.dotnet.cli and get CAxxxx analysis. :+1:
I referenced the assemblies for IDE and get no IDE diagnostics. The log contains error Unable to resolve assembly xxxx. The log is attached.
just Questions: Can roslynator apply fixing CAxxxx when run fix command (I find 59 fixable diagnostics with prefix 'CA' )? Why more than one iteration during analysis? What is meant by 'Infinite loop detected: Reported diagnostics have been previously fixed'?
Update There are many redundancy in the log and the same assembly is repeated tens times with "Resolve assembly xxx, Unable to resolve assembly sameAsembly"
First of all, I released new version of Roslynator.DotNet.Cli which references newest Roslyn 4.0.1. Please install newest version and try it.
Can roslynator apply fixing CAxxxx when run fix command (I find 59 fixable diagnostics with prefix 'CA' )?
Roslynator can fix any diagnostic if there is code fix provider. If you see "59 fixable diagnostics with prefix 'CA'" message then these diagnostics should be fixable
Why more than one iteration during analysis?
More iterations are usually necessary because 1) Not all diagnostics can be fixed in one iteration because one diagnostic is contained in the other) 2) Fixing of one diagnostic introduce another diagnostic
What is meant by 'Infinite loop detected: Reported diagnostics have been previously fixed'?
Fixing of diagnostic A introduces diagnostic B and fixing of diagnostic B introduces diagnostic A. It means that you should disable either A or B.
Thanks for your reply and the new release. I'll try it.
I have the latest Roslynator.Dotnet.CLi. This is what I see in the logs (roslynator.exe analyze -v diag):
Unable to resolve assembly 'Microsoft.CodeAnalysis.Analyzers, Culture=neutral, PublicKeyToken=null'.
The same for many other assemblies. Neither command-line nor Roslynator 2022 in Visual Studio 2022 finds any issues. Roslynator extension in VS Code sees 17 of them.
Hi,
Could you create a small project that reproduce the issue?
What is target framework of the project you analyzed?
For me it was .NET 6. I'll try to create small project to reproduce the problem.
❯ dotnet sln new --name Example
❯ dotnet new console --name Example.Project
[edit csproj making sure it asks for net 6.0]
❯ dotnet sln add .\Example.Project\Example.Project.csproj
❯ cat .\Example.Project\Example.Project.csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
[edit Program.cs]
❯ cat .\Example.Project\Program.cs
Console.WriteLine($"char: {Foo.A}");
class Foo
{
public static char A = (char)'A';
}
❯ dotnet run --project .\Example.Project\
char: A
❯ roslynator.exe analyze -v diag
Roslynator Version: 0.4.0.0
Roslynator Target Framework: .NET Core
Roslyn Version: 4.3.0.0
Available MSBuild locations:
.NET Core SDK, Version: 5.0.414, Path: C:\Program Files\dotnet\sdk\5.0.414
.NET Core SDK, Version: 6.0.302, Path: C:\Program Files\dotnet\sdk\6.0.302
.NET Core SDK, Version: 6.0.403, Path: C:\Program Files\dotnet\sdk\6.0.403
MSBuild location is 'C:\Program Files\dotnet\sdk\6.0.403'
Load solution 'C:\Users\alexe\Projects\_Sandbox\C#\Example.sln'
Evaluate 00:00.20 Example.Project.csproj
Build 00:00.21 Example.Project.csproj
Resolve 00:00.10 Example.Project.csproj (net7.0)
Done loading solution 'C:\Users\alexe\Projects\_Sandbox\C#\Example.sln'
List of projects:
Example.Project
Analyze solution 'C:\Users\alexe\Projects\_Sandbox\C#\Example.sln'
Analyze 'Example.Project' 1/1
Add analyzer assembly 'Microsoft.CodeAnalysis.CSharp.NetAnalyzers, Version=6.0.5.1901, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
Resolve assembly 'Microsoft.CodeAnalysis.NetAnalyzers, Culture=neutral, PublicKeyToken=null'
Unable to resolve assembly 'Microsoft.CodeAnalysis.NetAnalyzers, Culture=neutral, PublicKeyToken=null'.
Resolve assembly 'Microsoft.CodeAnalysis.NetAnalyzers, Culture=neutral, PublicKeyToken=null'
Unable to resolve assembly 'Microsoft.CodeAnalysis.NetAnalyzers, Culture=neutral, PublicKeyToken=null'.
Resolve assembly 'Microsoft.CodeAnalysis.NetAnalyzers, Culture=neutral, PublicKeyToken=null'
Unable to resolve assembly 'Microsoft.CodeAnalysis.NetAnalyzers, Culture=neutral, PublicKeyToken=null'.
Resolve assembly 'Microsoft.CodeAnalysis.NetAnalyzers, Culture=neutral, PublicKeyToken=null'
Unable to resolve assembly 'Microsoft.CodeAnalysis.NetAnalyzers, Culture=neutral, PublicKeyToken=null'.
Add analyzer assembly 'Microsoft.CodeAnalysis.NetAnalyzers, Version=6.0.5.1901, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
267 supported diagnostics with prefix 'CA' (CA1000, CA1001, CA1002, CA1003, CA1005, CA1008, CA1010, CA1012, CA1014, CA1016, CA1017, CA1018, CA1019, CA1021, CA1024, CA1027, CA1028, CA1030, CA1031, CA1032, CA1033, CA1034, CA1036, CA1040, CA1041, CA1043, CA1044, CA1045, CA1046, CA1050, CA1051, CA1052, CA1054, CA1055, CA1056, CA1058, CA1060, CA1061, CA1062, CA1063, CA1064, CA1065, CA1066, CA1067, CA1068, CA1069, CA1070, CA1200, CA1303, CA1304, CA1305, CA1307, CA1308, CA1309, CA1310, CA1401, CA1416, CA1417, CA1418, CA1419, CA1501, CA1502, CA1505, CA1506, CA1507, CA1508, CA1509, CA1700, CA1707, CA1708, CA1710, CA1711, CA1712, CA1713, CA1715, CA1716, CA1720, CA1721, CA1724, CA1725, CA1727, CA1802, CA1805, CA1806, CA1810, CA1812, CA1813, CA1814, CA1815, CA1816, CA1819, CA1820, CA1821, CA1822, CA1823, CA1824, CA1825, CA1826, CA1827, CA1828, CA1829, CA1830, CA1831, CA1832, CA1833, CA1834, CA1835, CA1836, CA1837, CA1838, CA1839, CA1840, CA1841, CA1842, CA1843, CA1844, CA1845, CA1846, CA1847, CA1848, CA1849, CA2000, CA2002, CA2007, CA2008, CA2009, CA2011, CA2012, CA2013, CA2014, CA2015, CA2016, CA2017, CA2018, CA2100, CA2101, CA2109, CA2119, CA2153, CA2200, CA2201, CA2207, CA2208, CA2211, CA2213, CA2214, CA2215, CA2216, CA2217, CA2219, CA2225, CA2226, CA2227, CA2229, CA2231, CA2234, CA2235, CA2237, CA2241, CA2242, CA2243, CA2244, CA2245, CA2246, CA2247, CA2248, CA2249, CA2250, CA2251, CA2252, CA2253, CA2254, CA2255, CA2256, CA2257, CA2258, CA2300, CA2301, CA2302, CA2305, CA2310, CA2311, CA2312, CA2315, CA2321, CA2322, CA2326, CA2327, CA2328, CA2329, CA2330, CA2350, CA2351, CA2352, CA2353, CA2354, CA2355, CA2356, CA2361, CA2362, CA3001, CA3002, CA3003, CA3004, CA3005, CA3006, CA3007, CA3008, CA3009, CA3010, CA3011, CA3012, CA3061, CA3075, CA3076, CA3077, CA3147, CA5350, CA5351, CA5358, CA5359, CA5360, CA5361, CA5362, CA5363, CA5364, CA5365, CA5366, CA5367, CA5368, CA5369, CA5370, CA5371, CA5372, CA5373, CA5374, CA5375, CA5376, CA5377, CA5378, CA5379, CA5380, CA5381, CA5382, CA5383, CA5384, CA5385, CA5386, CA5387, CA5388, CA5389, CA5390, CA5391, CA5392, CA5393, CA5394, CA5395, CA5396, CA5397, CA5398, CA5399, CA5400, CA5401, CA5402, CA5403, CA5404, CA5405)
Resolve assembly 'Microsoft.CodeAnalysis.NetAnalyzers, Culture=neutral, PublicKeyToken=null'
Unable to resolve assembly 'Microsoft.CodeAnalysis.NetAnalyzers, Culture=neutral, PublicKeyToken=null'.
Resolve assembly 'Microsoft.CodeAnalysis.NetAnalyzers, Culture=neutral, PublicKeyToken=null'
Unable to resolve assembly 'Microsoft.CodeAnalysis.NetAnalyzers, Culture=neutral, PublicKeyToken=null'.
Done analyzing solution 'C:\Users\alexe\Projects\_Sandbox\C#\Example.sln' in 00:01.45
0 diagnostics found
Nocice multiple "unable to resolve" and the last line about 0 diagnostics. VS Code extension sees diagnostics.

The very same thing happens if I run roslynator.exe from inside the project not solution directory.
Now I have noticed this line: Resolve 00:00.10 Example.Project.csproj (net7.0) and I wonder where 7 creeps from.
Ok, here comes new log with 6.0 (solved by removing 'bin' and 'obj' subdirectories in the project directory):
❯ roslynator.exe analyze -v diag
Roslynator Version: 0.4.0.0
Roslynator Target Framework: .NET Core
Roslyn Version: 4.3.0.0
Available MSBuild locations:
.NET Core SDK, Version: 5.0.414, Path: C:\Program Files\dotnet\sdk\5.0.414
.NET Core SDK, Version: 6.0.302, Path: C:\Program Files\dotnet\sdk\6.0.302
.NET Core SDK, Version: 6.0.403, Path: C:\Program Files\dotnet\sdk\6.0.403
MSBuild location is 'C:\Program Files\dotnet\sdk\6.0.403'
Load solution 'C:\Users\alexe\Projects\_Sandbox\C#\Example.sln'
Evaluate 00:00.20 Example.Project.csproj
Build 00:00.29 Example.Project.csproj
Resolve 00:00.14 Example.Project.csproj (net6.0)
Done loading solution 'C:\Users\alexe\Projects\_Sandbox\C#\Example.sln'
List of projects:
Example.Project
Analyze solution 'C:\Users\alexe\Projects\_Sandbox\C#\Example.sln'
Analyze 'Example.Project' 1/1
Add analyzer assembly 'Microsoft.CodeAnalysis.CSharp.NetAnalyzers, Version=6.0.5.1901, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
Resolve assembly 'Microsoft.CodeAnalysis.NetAnalyzers, Culture=neutral, PublicKeyToken=null'
Unable to resolve assembly 'Microsoft.CodeAnalysis.NetAnalyzers, Culture=neutral, PublicKeyToken=null'.
Resolve assembly 'Microsoft.CodeAnalysis.NetAnalyzers, Culture=neutral, PublicKeyToken=null'
Unable to resolve assembly 'Microsoft.CodeAnalysis.NetAnalyzers, Culture=neutral, PublicKeyToken=null'.
Resolve assembly 'Microsoft.CodeAnalysis.NetAnalyzers, Culture=neutral, PublicKeyToken=null'
Unable to resolve assembly 'Microsoft.CodeAnalysis.NetAnalyzers, Culture=neutral, PublicKeyToken=null'.
Resolve assembly 'Microsoft.CodeAnalysis.NetAnalyzers, Culture=neutral, PublicKeyToken=null'
Unable to resolve assembly 'Microsoft.CodeAnalysis.NetAnalyzers, Culture=neutral, PublicKeyToken=null'.
Add analyzer assembly 'Microsoft.CodeAnalysis.NetAnalyzers, Version=6.0.5.1901, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
267 supported diagnostics with prefix 'CA' (CA1000, CA1001, CA1002, CA1003, CA1005, CA1008, CA1010, CA1012, CA1014, CA1016, CA1017, CA1018, CA1019, CA1021, CA1024, CA1027, CA1028, CA1030, CA1031, CA1032, CA1033, CA1034, CA1036, CA1040, CA1041, CA1043, CA1044, CA1045, CA1046, CA1050, CA1051, CA1052, CA1054, CA1055, CA1056, CA1058, CA1060, CA1061, CA1062, CA1063, CA1064, CA1065, CA1066, CA1067, CA1068, CA1069, CA1070, CA1200, CA1303, CA1304, CA1305, CA1307, CA1308, CA1309, CA1310, CA1401, CA1416, CA1417, CA1418, CA1419, CA1501, CA1502, CA1505, CA1506, CA1507, CA1508, CA1509, CA1700, CA1707, CA1708, CA1710, CA1711, CA1712, CA1713, CA1715, CA1716, CA1720, CA1721, CA1724, CA1725, CA1727, CA1802, CA1805, CA1806, CA1810, CA1812, CA1813, CA1814, CA1815, CA1816, CA1819, CA1820, CA1821, CA1822, CA1823, CA1824, CA1825, CA1826, CA1827, CA1828, CA1829, CA1830, CA1831, CA1832, CA1833, CA1834, CA1835, CA1836, CA1837, CA1838, CA1839, CA1840, CA1841, CA1842, CA1843, CA1844, CA1845, CA1846, CA1847, CA1848, CA1849, CA2000, CA2002, CA2007, CA2008, CA2009, CA2011, CA2012, CA2013, CA2014, CA2015, CA2016, CA2017, CA2018, CA2100, CA2101, CA2109, CA2119, CA2153, CA2200, CA2201, CA2207, CA2208, CA2211, CA2213, CA2214, CA2215, CA2216, CA2217, CA2219, CA2225, CA2226, CA2227, CA2229, CA2231, CA2234, CA2235, CA2237, CA2241, CA2242, CA2243, CA2244, CA2245, CA2246, CA2247, CA2248, CA2249, CA2250, CA2251, CA2252, CA2253, CA2254, CA2255, CA2256, CA2257, CA2258, CA2300, CA2301, CA2302, CA2305, CA2310, CA2311, CA2312, CA2315, CA2321, CA2322, CA2326, CA2327, CA2328, CA2329, CA2330, CA2350, CA2351, CA2352, CA2353, CA2354, CA2355, CA2356, CA2361, CA2362, CA3001, CA3002, CA3003, CA3004, CA3005, CA3006, CA3007, CA3008, CA3009, CA3010, CA3011, CA3012, CA3061, CA3075, CA3076, CA3077, CA3147, CA5350, CA5351, CA5358, CA5359, CA5360, CA5361, CA5362, CA5363, CA5364, CA5365, CA5366, CA5367, CA5368, CA5369, CA5370, CA5371, CA5372, CA5373, CA5374, CA5375, CA5376, CA5377, CA5378, CA5379, CA5380, CA5381, CA5382, CA5383, CA5384, CA5385, CA5386, CA5387, CA5388, CA5389, CA5390, CA5391, CA5392, CA5393, CA5394, CA5395, CA5396, CA5397, CA5398, CA5399, CA5400, CA5401, CA5402, CA5403, CA5404, CA5405)
Resolve assembly 'Microsoft.CodeAnalysis.NetAnalyzers, Culture=neutral, PublicKeyToken=null'
Unable to resolve assembly 'Microsoft.CodeAnalysis.NetAnalyzers, Culture=neutral, PublicKeyToken=null'.
Resolve assembly 'Microsoft.CodeAnalysis.NetAnalyzers, Culture=neutral, PublicKeyToken=null'
Unable to resolve assembly 'Microsoft.CodeAnalysis.NetAnalyzers, Culture=neutral, PublicKeyToken=null'.
Done analyzing solution 'C:\Users\alexe\Projects\_Sandbox\C#\Example.sln' in 00:02.01
0 diagnostics found
In the case it is important:
❯ dotnet --list-sdks
5.0.414 [C:\Program Files\dotnet\sdk]
6.0.302 [C:\Program Files\dotnet\sdk]
6.0.403 [C:\Program Files\dotnet\sdk]
7.0.100 [C:\Program Files\dotnet\sdk]
❯ dotnet --version
7.0.100
VS Code:

I have a same problem in .net6.0 c# project, i create a new project but also have this error