如何将CA [SuppressMessage]标记为“祝福”?

时间:2010-09-30 02:43:07

标签: visual-studio visual-studio-2010 code-analysis fxcop

尽我所能在代码库中将[SuppressMessage]保持在最低限度,继续引入新的代码库。我想在代码中说一些方法“我已经回顾了这个[SuppressMessage]并且它是'可接受的'”。

有一种想法是创建我自己的My.CodeAnalysis.SuppressMessageAttribute类,它继承自System.Diagnostics.CodeAnalysis.SuppressMessageAttribute,但该类是密封的。

我确信我可以在属性和后处理步骤附近拼凑一些注释,但我想坚持使用Visual Studio 2010“框中”可用的内容。

2 个答案:

答案 0 :(得分:1)

即使属性未被密封,子类化方法也不起作用,因为代码分析引擎会筛选出精确的SuppressMessageAttribute实例。在编写当前版本时,引擎将完全忽略子类实例。

就个人而言,我使用以下方法来管理抑制:

  1. 所有“永久性”抑制必须 有一个Justification属性 解释原因 抑制。
  2. 尽可能永久 抑制必须放在 目标代码文件。否则,他们 必须放在顶部 GlobalSuppressions文件。
  3. 临时抑制必须都是 放在“临时 抑制“标题评论 GlobalSuppressions文件,以及它们 不应该分配一个 理由。
  4. 所有永久性抑制都是 完全符合代码审查的要求 与代码本身相同的方式。 我使用差异检测来标记 代码供审阅,所以我可以看到哪个 抑制已被添加或 改变就像我看到的一样容易 哪些代码已被修改。
  5. 临时抑制必须全部通过项目的预定阶段删除。在此点过后,将启用检测缺少的对齐属性的规则。
  6. 如果这种事情对您不起作用,另一种方法是使用独立的FxCop来注释您的抑制违规行为。不幸的是,这些注释将存在于您的代码库之外,但如果您想阻止开发人员“祝福”他们自己的抑制,那么这可能更适合您。

答案 1 :(得分:0)

右键单击错误列表中的CA警告时,给出的选项之一是抑制消息 - >在项目抑制文件中。当您选择它时,Visual Studio将向您的项目中的GlobalSuppressions.cs文件添加如下所示的行:

[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Autofac")]

这可以将它们组合在一起并从代码文件中分组。这是你想要的吗?