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

时间:2016-07-07 13:21:19

标签: c# .net visual-studio-2015 code-analysis .net-4.6

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

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

然而,这很麻烦,并且在一个有很多单元测试的课程中变得杂乱无章。

我试过了:

  1. 将属性移至课程
  2. 包装
  3. 中的所有方法

    #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和新的代码分析分析器。

3 个答案:

答案 0 :(得分:1)

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

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

[System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage]

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

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

答案 1 :(得分:1)

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

如果选择“In Source”,

SuppressMessageAttibute将被添加到源代码(方法或类级别)。

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

snapshot here

答案 2 :(得分:1)

单击灯泡图标[?]或按fig.patch.set_alpha(0.0) + fig, (axe0, axe1) = plt.subplots(nrows=2, sharex=True) axe0.scatter(x, y0, c='k') axe0.set_facecolor('red') axe1.scatter(x, y1, c='k') axe1.set_facecolor('blue') dst = op.join(op.expanduser('~'), 'Desktop', 'Temp.png') fig.patch.set_alpha(0.0) fig.savefig(dst, format='png') plt.show() 组合键。这应该打开一个像波纹管这样的上下文菜单。

suppression

然后在抑制文件菜单项中选择抑制或配置问题> 抑制XXX > 。如果不存在,它将创建Ctrl文件,并在其中添加新行。

默认情况下,它将仅抑制对选定成员的警告(方法)。您可以将Scope更改为.,并将Target更改为完整的班级名称(例如:GlobalSuppression.cs)。

这是一个例子:

type