2012-01-03 43 views
1

我知道當代碼中留有NotImplementedException時(我可以理解發布版本),有些規則可用(請參閱this answerthis question),但我希望有相反的:有代碼分析忽略方法拋出一個NotImplementedException,因爲他們被稱爲未完成。讓代碼分析忽略引發NotImplementedException的方法

背景:
當我開發一段代碼時,我想測試一下我到目前爲止,在我完成之前。我也希望CA能夠開啓,所以我可以儘早地糾正錯誤(例如:沒有正確處理資源)。但是由於我仍然在開發這些代碼,所以仍然有一些我認爲不會被我的測試使用的存根。這種存根的主體通常不超過throw new NotImplementedException();

當我構建代碼時,CA抱怨該方法可能是「靜態」的,並且參數未使用。我知道我可以抑制CA錯誤,但這意味着我將不得不記住在構建這些方法時將這些抑制措施取出,並且這是一個額外的構建(一個用於獲取消息,以便我可以抑制它們,一個用於真正運行碼)。

我的問題:
有沒有辦法讓CA忽略沿至少一個代碼路徑的NotImplementedException結尾的方法?如果可以將其設置爲僅在調試模式下工作,那將會非常好,因此您可以在發佈版本中獲得有關該異常的警告。

爲了記錄,我使用VS2010。

回答

1

不是。代碼分析中沒有這樣的選項。

你可以做的是編寫一個自定義規則,標記拋出一個NotImplementedException,然後處理代碼分析結果,並刪除與NotImplemented自定義規則相同的目標方法的任何條目。這條規則應該很容易實現。在NotImplementedException類上搜索任何構造函數調用可能就足夠了。

但是,如果您從命令行運行代碼分析,然後後處理xml文件,這隻會工作。

您也可以使用GeneratedCodeAttribute來標記該方法,因爲默認情況下這些方法將被忽略。

+0

是的,我沒有找到任何選項,所以我希望有一些插件或東西。在命令行中的用法並不是我所追求的:當我按下(Ctrl-)F5時它應該起作用。我記得語法的單個屬性可能是一個臨時解決方案,謝謝。 – 2012-01-05 09:24:59