Skip to content

Code Analysis rule documentation should list all editorconfig names for a rule #24437

Closed
@daiplusplus

Description

@daiplusplus

Old Issue description

  • The documentation for CA1xxx rules do not state what their full .editorconfig rule names are.
    • This makes it impossible to suppress or configure rules using .editorconfig given that the Error List's Suppress and Configure menus are currently broken at-present if you don't already know what the name is.
    • Also, given that some rules (especially code style rules) have both IDE0000-style names and Editorconfig-standard names this makes things even more confusing.
    • Additionally so when rules' names change between legacy FxCop, Roslyn-based, and NuGet-package-based releases.
  • Additionally, the generic example given in the documentation implies that every rule is under dotnet_code_quality which is not true, but it's used for every rule's documentation. For example, CA1054 is dotnet_diagnostic.CA1054, not dotnet_code_quality.CA1054. However I couldn't find any documentation for CA1054's full name - I found it out through trial-and-error.

(Revised) Issue description

Ask 1: Please list all .editorconfig names for each rule (at the top of each page):

The documentation pages for both Code Analysis and Code Style do not clearly document all of the .editorconfig names for each rule.

Specifically, the problem I experienced is that each rule has very different names for setting a rule's options compared to setting a rule's severity or for suppressing it - which also differs from the name used for suppressing entire categories.

For example, for CA1000 (comments inline):

# If you want to disable CA1000 then you need this:
dotnet_diagnostic.CA1000.severity = none

# If you want to configure CA1000 then you need this:
dotnet_code_quality.CA1000.api_surface = private, intern

# If you want to suppress all rules in the same category then you need this:
dotnet_analyzer_diagnostic.category-Design.severity = none

For Code style it's even more inconsistent:

# If you want to disable IDE0058 then you need this:
dotnet_diagnostic.IDE0058.severity = none

# If you want to configure IDE0058 then you need this:
csharp_style_unused_value_expression_statement_preference = discard_variable

# ...but you can do this too:
csharp_style_unused_value_expression_statement_preference = discard_variable:none

# If you want to suppress all rules in the same category then you need this:
dotnet_analyzer_diagnostic.category-Style.severity = none

To clarify: I'm not complaining that the names are inconsistent (well, I am...), but I'm complaining that the documentation does not serve as a quick and easy reference to discover the other names of a rule.

So I'm asking for the info-table in every rule's documentation to show all 3 .editorconfig names (the specific rule's name, the name for when suppressing it or configuring its severity, and the name for when configuring its category's severity), as well as all available options in a succinct list.

So this:

image

Should be something like this:

image

Ask 2: Include copypastable severity syntaxes in every rule page:

Given the most likely reason for visiting Code Analysis documentation is to figure out how to suppress a rule, I'd also like to see table rows containing copypastable suppression syntaxes, in all 3 formats:

  • Preprocessor directive:
    • #pragma warning disable CA1000 // Do not declare static members on generic types
  • Global Suppression File:
    • [assembly: SuppressMessage("Microsoft.Design","CA1000:DoNotDeclareStaticMembersOnGenericTypes", Scope = "Type")]
  • .editorconfig (single rule):
    • dotnet_diagnostic.CA1000.severity = none (or silent)
  • .editorconfig (entire rule category):
    • dotnet_analyzer_diagnostic.category-Design.severity = none (or silent)

Ask 3: Document the .editorconfig rule prefixes:

I would also like to see a page document why the rule name prefixes are different, and as they are different, what they represent. I'm asking because the names are not self-describing at all:

  • dotnet_diagnostic
  • dotnet_analyzer_diagnostic
  • dotnet_code_quality

Ask 4: The Code quality rule configuration options page should also mention severity

The Code quality rule configuration options page should also have a section for configuring a rule's severity and/or how to suppress it, as I was under the mistaken belief that setting the severity uses the same syntax as setting an OptionValue.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions