Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何禁用整个类的特定代码分析警告_C#_.net_Visual Studio 2015_Code Analysis_.net 4.6 - Fatal编程技术网

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

C# 如何禁用整个类的特定代码分析警告,c#,.net,visual-studio-2015,code-analysis,.net-4.6,C#,.net,Visual Studio 2015,Code Analysis,.net 4.6,我试图在整个类中禁用代码分析规则,但不是针对整个项目,只是针对单个类。在下面的示例中,构建生成CA1822警告,因为它认为单元测试方法应该是静态的 修复方法是向每个单元测试方法添加以下属性: [System.Diagnostics.CodeAnalysis.SuppressMessageMicrosoft.Performance,CA1822:MarkMembersAsStatic] 然而,这很麻烦,并且会使一个包含许多单元测试的类变得混乱 我试过: 将属性移动到类 将所有方法包装在 pragm

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

修复方法是向每个单元测试方法添加以下属性: [System.Diagnostics.CodeAnalysis.SuppressMessageMicrosoft.Performance,CA1822:MarkMembersAsStatic]

然而,这很麻烦,并且会使一个包含许多单元测试的类变得混乱

我试过:

将属性移动到类 将所有方法包装在 pragma警告禁用CA1822

pragma警告恢复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
    }
}

使用VS2015更新2、.net 4.61和新的代码分析分析器。

这并不是您想要的,但可能比您现在的情况更糟糕

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

[System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage]
请注意,您的项目需要选中Visual Studio选项“抑制仅管理生成代码的结果”


尽管令人恼火,但如果您临时注释属性,您仍然可以选择对文件运行代码分析。

右键单击错误列表选项卡下的错误,您可以选择“源代码中”和“抑制文件中”

如果选择“在源代码中”,SuppressMessageAttibute将添加到源代码方法或类级别

“[assembly:SUppressMessage”将添加到globalSuppressions.cs文件中,您可以配置该属性的“Target”


单击灯泡图标[我通过对单元测试项目使用不同的代码分析规则集解决了这一问题和其他问题。我关闭了不适用于单元测试项目的规则。@MatthewWatson-我对测试项目也使用了不同的规则集。在这种情况下,我希望规则适用于我的单元测试项目,而不是一个特定的类。不幸的是,您可以“不能这样做-抑制必须始终应用于报告警告/错误的级别,因此如果这是一种方法,则只能抑制该方法的警告。@MatthewWatson-您知道为什么pragma解决方案适用于Stylecop而不适用于代码分析吗?”Fraid没有。我想只是不同。ExcludeFromCodeOverage指定属性代码应该从代码覆盖率信息中排除,而不是从代码分析中排除。很遗憾,请参阅MSDN文档,错误列表中的所有消息/警告/错误都不能被抑制。显然,源代码/全局抑制中的抑制>菜单只会针对IntelliSense源代码的消息/警告/错误而不是生成时间显示消息/警告/错误。