防止在FxCop中多次报告相同的规则违规 - 什么是Id?

时间:2010-03-29 21:57:44

标签: c# .net code-analysis fxcop suppressmessage

FxCop当前报告了特定方法的相同规则违规 - 它有两个输出参数,因为我想向调用者返回两个值而不为它创建结构。我想知道匿名类型是否可以解决我的问题,但在编写方法时我并不知道它们。

无论如何,我正在为每个参数报告一次CheckId CA1021。我从FxCop复制了SuppressMessage文本,然后意识到每条消息的Id都不同!对我来说,似乎你只需要CheckId,所以......

  1. Id用于什么?我无法在网上找到相关信息。
  2. ID会保持不变吗?我假设,或者SuppressMessage不会像人们希望的那样工作
  3. 有没有办法指定SuppressMessage属性,以便它抑制所有 ID?

1 个答案:

答案 0 :(得分:1)

来自In Source Suppression Overview

  

属性只能应用于方法,不能嵌入方法体中。但是,您可以将标识符指定为消息ID,以区分方法中多次出现违规。

换句话说:MessageId用于抑制范围内的单个错误实例;如果您担心在同一方法中意外地再次引入错误并希望用FxCop捕获新的介绍(或者如果您想为每次出现的问题指定不同的理由),这是很方便的。如果您不害怕引入更多这些错误(或者不关心您是否这样做),并且具有相同的理由,您可以简单地在Suppress语句中省略MessageId:[SuppressMessage("Microsoft.Design", "CA1021:AvoidOutParameters")]