Search code examples
c#.netnamespacescode-analysisfxcop

'SuppressMessage' for a whole namespace


I use underscores for my test methods for a better readability and I want to suppress FxCop errors/warnings for the whole test namespace.

How can I achieve this? I played with GlobalSuppressions.cs but nothing worked:

[module: System.Diagnostics.CodeAnalysis.SuppressMessage(
    "Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores",
    Scope = "namespace", Target = "Company.Product.Tests")]

[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(
    "Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores",
    Scope = "namespace", Target = "Company.Product.Tests")]

Solution

  • Suppression of a code analysis warning for a namespace and all its descendant symbols is possible since Visual Studio 2019:

    [assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(
        "Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores",
        Justification = "Test methods require underscores for readability."
        Scope = "namespaceanddescendants", Target = "Company.Product.Tests")]
    

    Scope - The target on which the warning is being suppressed. If the target is not specified, it is set to the target of the attribute. Supported scopes include the following:

    • ...

    • namespaceanddescendants - (New for Visual Studio 2019) This scope suppresses warnings in a namespace and all its descendant symbols. The namespaceanddescendants value is only valid for Roslyn analyzers, and is ignored by binary, FxCop-based static analysis.

    Suppress code analysis warnings#SuppressMessage attribute @ MS Docs