如何禁用整个类的特定代码分析警告
我试图在整个类中禁用代码分析规则,但不是整个项目,只是一个类。 在下面的示例中,构建生成CA1822警告,因为它认为unit testing方法应该是静态的。
修复是将以下属性添加到每个unit testing方法: [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1822:MarkMembersAsStatic")]
然而,这很繁琐,并且在一个有很多unit testing的课程中变得杂乱无章。
我试过了:
- 将属性移动到类
- 包装所有方法
#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’。
快照在这里