简体   繁体   中英

Does StyleCop.Analyzers support C# records?

Problem description:

When adding a C# record in a project with StyleCop.Analyzers , it shows the warning:

Warning AD0001  Analyzer 'StyleCop.Analyzers.DocumentationRules.SA1649FileNameMustMatchTypeName' threw an exception of type 'System.ArgumentException' with message 'Unhandled declaration kind: RecordDeclaration'.    

System.ArgumentException: Unhandled declaration kind: RecordDeclaration
       at StyleCop.Analyzers.Helpers.NamedTypeHelpers.GetNameOrIdentifier(MemberDeclarationSyntax member)
       at StyleCop.Analyzers.Helpers.FileNameHelpers.GetConventionalFileName(MemberDeclarationSyntax declaration, FileNamingConvention convention)
       at StyleCop.Analyzers.DocumentationRules.SA1649FileNameMustMatchTypeName.Analyzer.HandleSyntaxTree(SyntaxTreeAnalysisContext context, StyleCopSettings settings)
       at StyleCop.Analyzers.AnalyzerExtensions.<>c__DisplayClass0_0.<RegisterSyntaxTreeAction>b__0(SyntaxTreeAnalysisContext c)
       at Microsoft.CodeAnalysis.Diagnostics.AnalyzerExecutor.<>c.<ExecuteSyntaxTreeActionsCore>b__59_1(ValueTuple`2 data)
       at Microsoft.CodeAnalysis.Diagnostics.AnalyzerExecutor.ExecuteAndCatchIfThrows_NoLock[TArg](DiagnosticAnalyzer analyzer, Action`1 analyze, TArg argument, Nullable`1 info)

Is it a bug in StyleCop.Analyzers ?

Steps to reproduce:

  • Create a new .Net6 console project (or even .Net5 ).

  • Add a C# record in it: public record Member(string FirstName, string LastName);

  • Install the package StyleCop.Analyzers v1.1.118

  • Look in the Visual Studio Error List, and you will see the warning.

Thank you @stuartd you pointed me to the right direction.

It is indeed a bug in Stylecop 1.1.X

It was corrected in the StyleCop.Analyzers.Unstable v1.2.0-beta.161 . but unfortunately, it is not included in the stable version yet. So the workaround I see for now is to use the unstable version

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM