关于.net:我可以在全球范围内抑制违反FX Cop代码分析的行为吗?

关于.net:我可以在全球范围内抑制违反FX Cop代码分析的行为吗?

Can I suppress FX Cop code analysis violations globally?

当您使用Visual Studio的代码分析(FxCop)并希望隐藏消息时,有3个选项。

  • 禁止代码冲突。
  • 禁止GlobalSupression.cs文件中的冲突。
  • 在项目文件中禁用违规检查(通过Project-> Properties-> Code Analysic)。
  • 签入源代码管理时,后面的内容很难检查,也很难获得所有禁用违规的概述。 因此,我们想使用选项2。

    选项1和2的问题在于,每次违规都会产生一条禁止线。 例如:

    1
    2
    [assembly: SuppressMessage("Microsoft.Design","CA1020:AvoidNamespacesWithFewTypes", Scope ="namespace", Target ="Company.Project.Namespace2")]
    [assembly: SuppressMessage("Microsoft.Design","CA1020:AvoidNamespacesWithFewTypes", Scope ="namespace", Target ="Company.Project.Namespace1")]

    我们希望通过GlobalSuppressions.cs进行如下操作:

    1
    [assembly: SuppressMessage("Microsoft.Design","CA1020:AvoidNamespacesWithFewTypes")]

    但这有可能吗?


    正式不支持使用单个SuppressMessage属性抑制多个冲突。显然,这是设计使然。

    我同意,有时可能会很烦人,但我不能说我不同意这个决定,因为该属性是他们迫使您说"是的,我知道我在做什么"的方式,应该对此进行评估视情况而定。


    自发布并回答此问题以来,我认为情况已经改变。对于Visual Studio 2010和2012,您可以创建自定义"规则集"文件,在其中可以指定要禁止的代码分析规则。

    http://msdn.microsoft.com/zh-CN/library/dd380660.aspx

    因此,我要做的是在存储库源集合的顶级文件夹中创建一个自定义规则集文件,并在每个Visual Studio项目中引用此文件。这意味着我在一个中心位置可以压制我简直无法忍受的代码分析规则。但是,如果我改变主意,或者决定重新考虑自己的不良编码习惯,则可以非常简单地重新启用该规则,并查看获得了多少代码分析消息。


    推荐阅读