当您使用Visual Studio的代码分析(FxCop),并且想要抑制消息时,有3个选项。
在检入源代码管理时很难检查后者,并且很难全面了解所有已禁用的违规行为。所以我们想使用选项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上做这样的事情:
[assembly: SuppressMessage("Microsoft.Design", "CA1020:AvoidNamespacesWithFewTypes")]
但这可能吗?
答案 0 :(得分:9)
官方不支持使用单个 SuppressMessage 属性抑制多个违规。显然,这是设计的。
我同意,有时可能会讨厌,但我不能说我不同意这个决定,因为这个属性是他们强迫你说“是的,我知道我在做什么”的方式,这应该是根据具体情况进行评估。
答案 1 :(得分:1)
我认为自从发布并回答了这个问题后情况发生了变化。对于Visual Studio 2010和2012,您可以创建自定义“规则集”文件,您可以在其中指定要抑制的代码分析规则。
http://msdn.microsoft.com/en-us/library/dd380660.aspx
所以我所做的就是创建一个自定义规则集文件,该文件位于我的存储库源集合的顶级文件夹中,我在每个Visual Studio项目中引用该文件。这意味着我有一个中心位置,我可以抑制代码分析规则,我根本无法忍受。但是,如果我改变主意,或者决定重新考虑我的不良编码习惯,我可以简单地重新启用规则,看看我得到了多少代码分析消息。