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

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

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

然而,这很繁琐,并且在一个有很多unit testing的课程中变得杂乱无章。

我试过了:

  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 } } 

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

这不是你想要的,但可能比你的情况更小。

您可以使用以下属性告知代码分析忽略特定类:

 [System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] 

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

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

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

如果选择“In Source”,SuppressMessageAttibute将被添加到源代码(方法或类级别)。

‘[assembly:SUppressMessage’将被添加到GlobalSupressions.cs文件中,您可以配置属性的’Target’。

快照在这里