c#/。网/fxcop!

...在课堂上,我希望FXCOP闭嘴抱怨

Warning CA1062 : Microsoft.Design : 
In externally visible method 'xyz', validate parameter 'a' before using it. 

基本上,该规则表明我放了一个 if (a == null) throw new ArgumentNullException("a"); 在我的代码中几乎所有方法的开头。这很糟糕并改变了异常处理逻辑。

因此,我把它放在我的班上的某个地方:

[SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods",
     Scope = "Type", 
     MessageId = "0", 
     Justification = "We love danger... so far.")]

无论如何,这甚至不会抑制一条消息 - 我仍然会收到所有这些警告。它只有在可犯错误的方法定义之一上方的一个警告(即它仅拒绝一个警告,而不是全部此类警告)时,才会抑制警告。奇怪的是,同一语法适用于我班上多次出现的其他问题。

我不知道我在做什么错,坦率地说,我真的不明白如何使用属性参数。 http://msdn.microsoft.com/de-de/library/ms244717.aspx 不会太多细节。 :t ...无论如何,有什么想法是不对的吗?

有帮助吗?

解决方案

您要抑制所有课程或仅一类的消息吗?如果前者,您可以禁用该规则。 (这样做的确切机制取决于您如何运行FXCOP,因此,如果您需要帮助,请提供详细信息。)

如果后者,您将需要为至少检测到问题的每种方法添加抑制属性。这样做的原因是,FXCOP仅在违规目标上寻找抑制。 FXCOP尝试确定是否已抑制违规行为时,FXCOP从未检查过添加到“父”元素(例如:方法所属的类)的抑制。

如果您使用目标属性,则确实可以在代码中放置抑制作用的位置具有一定的灵活性,但这不会改变每个违规目标的抑制属性的需求。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top