2008-09-16 40 views
9

当您使用Visual Studio的代码分析(FxCop),并且想要抑制消息时,有3个选项。我可以全局抑制FX Cop代码分析违规吗?

  1. 抑制代码中的违规。
  2. 抑制GlobalSupression.cs文件中的冲突。
  3. 禁用项目文件中的违规检查(通过Project - > Properties - > Code Analysic)。

后来很难检查时检查到源代码管理,很难得到所有禁用违规概述。所以我们想要使用选项2.

选项1和2的问题是,您为每个违规获得一条抑制线。 E.g像:

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

我们愿意做这样的事情ING GlobalSuppressions.cs:

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

但是这可能吗?

回答

9

用单个抑制多个违规SuppressMessage属性是官方不支持的。显然,这是设计。

我同意,有时候可能很烦人,但我不能说我不同意这个决定,因为这个属性是他们强迫你说“是的,我知道我在做什么”的方式,这是应根据具体情况进行评估。

1

我想事情已经改变,因为这个问题已发布和回答。对于Visual Studio 2010和2012,您可以创建自定义“规则集”文件,您可以在其中指定要抑制的代码分析规则。

http://msdn.microsoft.com/en-us/library/dd380660.aspx

所以我所做的就是创建一个自定义的规则集文件,该文件是在我的仓库源集合的顶层文件夹,我在每个Visual Studio项目中引用此文件。这意味着我有一个中心位置,可以抑制我无法忍受的代码分析规则。但是如果我改变了主意,或者决定重新考虑我的糟糕的编码习惯,我可以简单地重新启用规则并查看我得到的代码分析消息的数量。