我正在开发一个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?
答案 0 :(得分:0)
CA1811实际上是“避免未经调用的私人代码”。这意味着FXCop认为他们没有被调用,因为没有明确的事件绑定。 Auto Event Wire Up意味着它们被称为&可以抑制此规则,或者您可以显式处理具有相同效果的事件。
“CA2109:审查可见事件处理程序”有点说同样的事情。它知道他们是事件处理程序,但是说为什么他们需要在课堂外可见?
规则并不是真正矛盾的,他们对你的建议并不十分清楚。