在現有代碼庫上對現有違規實施FxCop /靜態分析時使用了哪些策略?如何最有效地減少靜態分析違規?如何在現有代碼庫上實現FxCop /靜態分析
回答
自由使用[SuppressMessage]屬性開始。至少在一開始。一旦通過屬性將計數值設置爲0,您就會得到一條新規則,即不會引入FxCop違規。
Visual Studio 2008具有很好的代碼分析功能,可以確保代碼分析在每個構建版本上運行,並且可以將警告視爲錯誤。這可能會減慢一點,所以我建議設置一個持續集成服務器(如CruiseControl.NET)並讓它在每次簽入時運行代碼分析。
一旦您得到控制權,並且不會在每次簽入時引入新的違規行爲,請開始一次處理整個類別的FxCop違規行爲,目的是移除您使用的SuppressMessageAttributes。
跟蹤您真正想要保留哪些的方法是始終爲您想要抑制的值添加合理值。
以傳球風格重寫您的代碼!
說真的,舊的代碼庫會有數百個錯誤 - 但這就是爲什麼我們有新手/實習生程序員。糾正FxCop違規是一個很好的方式來獲得代碼庫的概述,並學習如何編寫符合.NET代碼。
所以,只需咬一口子,喝大量的咖啡因,並在幾天內完成!
NDepend looks like它可以做你在做什麼之後,但我不確定它是否可以集成到CruiseControl.Net自動構建中,並且如果代碼不符合要求就會失敗構建(這是我想要發生什麼)。
還有其他想法嗎?
FxCop的替代方法是使用工具NDepend。這個工具允許編寫C#LINQ查詢代碼規則(我們稱之爲CQLinq)。 免責聲明:我是該工具的開發人員之一
默認情況下建議超過200 code rules。定製現有規則或創建自己的規則很簡單,這要歸功於着名的 C#LINQ語法。
爲了使假陽性的數量低,CQLinq提供獨特的功能來定義什麼是集JustMyCode通過與notmycode前綴特殊代碼查詢。有關此功能的更多解釋可以在here找到。這裏有例如兩個notmycode默認查詢:
爲了使假陽性的數量很低,CQLinq你也可以專注規則導致只在代碼中添加或代碼重構,因爲defined baseline in the past。請參見下面的規則,檢測方法,因爲基線過於複雜,增加或重構:
warnif count > 0
from m in Methods
where m.CyclomaticComplexity > 20 &&
m.WasAdded() || m.CodeWasChanged()
select new { m, m.CyclomaticComplexity }
最後,注意與NDepend的編碼規則可以被驗證live in Visual Studio並在生成過程中的時間,在generated HTML+javascript report。
- 1. FxCop或StyleCop中的自定義靜態代碼分析規則?
- 2. 在現有代碼庫中實現模擬倉庫
- 3. 靜態代碼分析如何工作
- 4. __DataBind__control通過ASP.NET中的FxCop代碼分析發現
- 5. 靜態代碼分析與動態代碼分析工具?
- 6. 靜態代碼分析/代碼註釋
- 7. 如何在android studio上實現代碼?
- 8. 在iPhone中實現靜態庫
- 9. 靜態/動態源代碼分析
- 10. 如何實現在C靜態圖
- 11. c#:運行時代碼分析 - 任何現有的庫?
- 12. 在類型上實現靜態方法
- 13. FxCop和代碼分析規則
- 14. 的FxCop的Silverlight代碼分析 - .NET 3.5
- 15. VS2008中的代碼分析/ FxCop
- 16. 如何在現有數據庫中實現多態關聯
- 17. Android:如何從您的JNI代碼使用現有的C++靜態庫?
- 18. 如何實現代碼
- 19. 靜態代碼分析註釋
- 20. 靜態代碼分析方法
- 21. Python中的靜態代碼分析?
- 22. 靜態代碼分析工具
- 23. 代碼增量靜態分析工具?
- 24. 選擇靜態代碼分析工具
- 25. 如何在構建期間抑制靜態代碼分析?
- 26. 如何使用final來實現靜態?
- 27. 如何實現全局靜態類
- 28. 如何在代碼中實現靜態網站的搜索框功能?
- 29. 如何在MongoDB Community Edition上實現靜態數據加密?
- 30. 實現代碼