题
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从未检查过添加到“父”元素(例如:方法所属的类)的抑制。
如果您使用目标属性,则确实可以在代码中放置抑制作用的位置具有一定的灵活性,但这不会改变每个违规目标的抑制属性的需求。
不隶属于 StackOverflow