roslynator icon indicating copy to clipboard operation
roslynator copied to clipboard

Roslynator commandLine can't catch the analysis of 'Microsoft.CodeAnalysis.CSharp.NetAnalyzers'

Open moh-hassan opened this issue 4 years ago • 16 comments
trafficstars

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

moh-hassan avatar Oct 16 '21 03:10 moh-hassan

Hi,

Do you use Roslynator.CommandLine or Roslynator.DotNet.Cli ?

josefpihrt avatar Oct 16 '21 14:10 josefpihrt

I use Roslynator.CommandLine 

moh-hassan avatar Oct 16 '21 19:10 moh-hassan

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.

josefpihrt avatar Oct 16 '21 19:10 josefpihrt

I will try and feedback

moh-hassan avatar Oct 16 '21 21:10 moh-hassan

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'?

logs.log

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"

moh-hassan avatar Oct 16 '21 22:10 moh-hassan

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.

josefpihrt avatar Nov 17 '21 10:11 josefpihrt

Thanks for your reply and the new release. I'll try it.

moh-hassan avatar Nov 19 '21 20:11 moh-hassan

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.

avysk avatar Nov 27 '22 14:11 avysk

Hi,

Could you create a small project that reproduce the issue?

What is target framework of the project you analyzed?

josefpihrt avatar Nov 27 '22 16:11 josefpihrt

For me it was .NET 6. I'll try to create small project to reproduce the problem.

avysk avatar Nov 27 '22 20:11 avysk

❯ 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. vscode

avysk avatar Nov 28 '22 07:11 avysk

The very same thing happens if I run roslynator.exe from inside the project not solution directory.

avysk avatar Nov 28 '22 07:11 avysk

Now I have noticed this line: Resolve 00:00.10 Example.Project.csproj (net7.0) and I wonder where 7 creeps from.

avysk avatar Nov 28 '22 07:11 avysk

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

avysk avatar Nov 28 '22 07:11 avysk

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: image

image

avysk avatar Nov 28 '22 08:11 avysk

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

Xy9310 avatar Mar 22 '23 11:03 Xy9310