2012-05-21 42 views
0

我正在開發一個ASP.NET項目。預計當然有一個Global.asax文件。裏面的Global.asax.cs文件,它包含了每個下面的方法,其中[與Application_Start除外]是不是真的空的,但是沒有必要在實際執行:Global.asax - FxCop警告衝突CA1811與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){ } 

我已經慢慢一直在啓用Visual Studio 2008提供的每個FxCop規則,並且最近遇到了與上述方法有關的衝突。我遇到的第一個錯誤是CA2109

CA2109 : Microsoft.Security : Consider making 'Global.Application_Error(object, EventArgs)' not externally visible. 

每個方法都會顯示此錯誤。由於我沒有手動調用任何這些方法,我可以通過使用每種方法private來刪除此警告。這樣做,並重新運行代碼分析後,我收到錯誤CA1811:

CA1811 : Microsoft.Performance : 'Global.Application_Error(object, EventArgs)' appears to have no upstream public or protected callers. 

我向大家赫然出現在堆棧溢出的社區世界的問題是:我應該聽哪一個警告和警告我應該壓制?有兩種方法可以同時滿足警告嗎?

我在假設安全勝過所有的正確,因此我應該聽取CA2109和抑制CA1811?

回答

0

CA1811實際上是「避免未調用的私人代碼」。這意味着FXCop認爲他們沒有被調用,因爲沒有明確的事件綁定。自動事件接線意味着他們被稱爲&這個規則可以被抑制,或者你可以明確地處理會產生相同效果的事件。

「CA2109:審查可見事件處理程序」有點同樣的事情。它知道他們是事件處理程序,但是他們說爲什麼他們需要在課堂外可見?

這些規則並不真正矛盾,他們只是不清楚他們對你的建議。

相關問題