Global.asax - FxCop警告冲突CA1811与CA2109

时间:2012-05-21 17:34:08

标签: asp.net performance security global-asax fxcop

我正在开发一个ASP.NET项目。预计当然有一个Global.asax文件。在Global.asax.cs文件中,它包含以下每个方法,[{1}}]除外,它们实际上不是空的,但不需要实际的实现:

Application_Start

我已经慢慢启用了Visual Studio 2008提供的每个FxCop规则,并且最近遇到了与上述方法有关的冲突。我遇到的第一个错误是CA2109

protected void Application_Start(object sender, EventArgs e){ }
protected void Session_Start(object sender, EventArgs e){ }
protected void Session_End(object sender, EventArgs e){ }
protected void Application_Error(object sender, EventArgs e){ }

为每种方法显示此错误。由于我不手动调用任何这些方法,我可以通过制作每个方法CA2109 : Microsoft.Security : Consider making 'Global.Application_Error(object, EventArgs)' not externally visible. 来删除此警告。执行此操作并重新运行代码分析后,我收到错误CA1811:

private

我向Stack Overflow社区世界的所有人提出的问题是:我应该听哪个警告以及应该抑制哪个警告?有没有办法满足这两个警告?

我是否正确假设安全性胜过所有,因此我应该听取CA2109并压制CA1811?

1 个答案:

答案 0 :(得分:0)

CA1811实际上是“避免未经调用的私人代码”。这意味着FXCop认为他们没有被调用,因为没有明确的事件绑定。 Auto Event Wire Up意味着它们被称为&可以抑制此规则,或者您可以显式处理具有相同效果的事件。

“CA2109:审查可见事件处理程序”有点说同样的事情。它知道他们是事件处理程序,但是说为什么他们需要在课堂外可见?

规则并不是真正矛盾的,他们对你的建议并不十分清楚。