2012-08-13 39 views
-2

有時,我在.NET框架中遇到了惱人的錯誤,編譯器無法在編譯時和運行時清楚地指出這些錯誤。 This for example創建生成編譯器錯誤的C#代碼分析規則

中說,如果你的MvcApplication.BeginRequest手動Application_Start從的Global.asax.cs線了,你會得到一個System.Web.HttpRuntime.ProcessRequestNotificationPrivateNullReferenceException

由於沒有明確的方法將錯誤與原因聯繫起來,所以能夠寫出一些說明如果從MvcApplication.Application_Start連接事件MvcApplication.BeginRequest來拋出編譯時錯誤,迫使您刪除它並解釋原因。

回答

0

您可以實現一個自定義FxCop規則,該規則檢查處理程序是否按照您所述進行了連接,並將該規則包含在您的代碼分析規則集中。檢查規則CA2001,它做了類似於你想要實現的東西。

有關實施自定義FxCop規則的信息,請參見http://www.binarycoder.net/fxcop/index.html

+0

如果MS會將此作爲CA2001規則添加到編譯器中,那將是非常棒的,但是我並沒有看到在這裏寫入自己的可用性。我可以看看FxCop,但你確定這個具體情況是可能的嗎?這似乎是一件很難定義的事情?任何指向類似FxCop規則的指針都會被預先考慮(嘗試搜索,但無法找到這樣的規則)。 – NKCSS 2012-08-13 11:32:40

+0

我只寫了簡單的FxCop規則,但我認爲它應該是可能的。許多標準規則非常複雜(例如檢查IDisposable是否正確實施)。嘗試在默認規則程序集上使用反編譯器。這應該給你一些想法如何實施你的規則。 – 2012-08-13 19:47:32