如何为整个类禁用特定的代码分析警告

SFu*_*n28 9 .net c# code-analysis visual-studio-2015 .net-4.6

我试图在整个类中禁用代码分析规则,但不是整个项目,只是一个类.在下面的示例中,构建生成CA1822警告,因为它认为单元测试方法应该是静态的.

修复是将以下属性添加到每个单元测试方法: [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1822:MarkMembersAsStatic")]

然而,这很繁琐,并且混乱了许多单元测试.

我试过了:

  1. 将属性移动到类
  2. 包装所有方法

#pragma warning disable CA1822

#pragma warning restore CA1822

这两种方法都没有奏效.

public class TestClass
{
    public TestClass()
    {
        // some setup here
    }

    [Fact]
    public void My_Unit_Test1()
    {
        // the 'this' parameter is never used, causes CA warning 1822
    }

    [Fact]
    public void My_Unit_Test2()
    {
        // the 'this' parameter is never used, causes CA warning 1822
    }
}
Run Code Online (Sandbox Code Playgroud)

使用VS2015 Update 2,.net 4.61和新的代码分析分析器.

Spr*_*ely 1

这并不完全是您想要的,但可能比您所遇到的情况危害较小。

您可以告诉代码分析忽略具有以下属性的特定类:

[System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage]
Run Code Online (Sandbox Code Playgroud)

请注意,您的项目需要选中 Visual Studio 选项“抑制生成代码的结果(仅限托管)”。

虽然很烦人,但如果您临时注释该属性,您仍然可以选择对文件运行代码分析。

  • `ExcludeFromCodeCoverage` 指定属性代码应从**代码覆盖率信息**中排除;不是来自代码分析。请参阅 MSDN 文档 (https://msdn.microsoft.com/en-us/library/system.diagnostics.codeanalysis.excludefromcodecoverageattribute(v=vs.110).aspx) (4认同)