使用StyleCop進行代碼審查
轉至:http://www.cnblogs.com/JerryTian/archive/2012/09/22/2697703.html
工欲善其事,必先利其器,上篇簡單介紹了怎樣使用Astyle進行代碼格式化,使編寫的代碼具有一致的風格。今天簡單介紹下怎樣使用StyleCop對原代碼進行審查,看編寫的代碼是否遵循設計規範、.Net約定和一些貫用法等。保證代碼的一致性,可讀性等等。
在此之前,先簡單介紹下FxCop(起初只是微軟內部使用的工具),一個分析託管程序集,檢測代碼的總體正確性的工具,告訴用戶哪些地方不符合設計規範。他使用的評估規則已經發展了多年,凝聚了頂尖.Net框架開發人員的知識和技術。但是FxCop是基於託管代碼分析的,即編譯後的程序集。今天我們介紹的StyleCop同樣是用來檢查代碼是否符合設計規範的,它是基於原代碼驗證的,僅支持C#語言,就是在開發期間進行代碼驗證的工具,相信在日常開發中,會幫助到大家,在使用工具的同時,逐漸改善和提高大家的編碼規範和意識,另外,相關內容推薦大家讀下《.Net設計規範-.Net約定、貫用法與模式》這本書。好了,入題:
首先,還是先下載最新版的StyleCop.
下載地址:http://stylecop.codeplex.com/
當前最新版本是StyleCop-4.7.37.0.msi,版本4.7,下載完成後,開始安裝,安裝過程非常簡單,這裏就不上圖了。安裝完成後,好像沒什麼反應,在開始菜單也不會出現相關菜單。沒關係,現在打開Visual Studio,我以Visual Studio2010爲例,見下圖:
在項目菜單上會出現StyleCop相關菜單。
點擊“Run StyleCop”,呵,警告一大堆,見下圖:
StyleCop已經把不符合規範的相關警告全部列出,並且已經定位到行和列,雙擊任一條項目即可定位到問題點。
也可以基於單個文件進行檢查,只要在當前代碼頁右鍵點擊“Run StyleCop”即可,見下圖:
其中檢驗的規則可在項目名稱的右鍵菜單“StyleCop Settings”中設定,見下圖,使用中發現對中文支持的不是很好。其中一些不適用的校驗規則可以不勾選即可。
下面主要對一些常見的警告簡單說明:
SA1633 : CSharp.Documentation : The file has no header, the header Xml is invalid, or the header is not located at the top of the file.
代碼不包含文件頭說明,格式如下。
//-----------------------------------------------------------------------
// <copyright file="Widget.cs" company="Sprocket Enterprises">
// Copyright (c) Sprocket Enterprises. All rights reserved.
// </copyright>
// <author>John Doe</author>
//-----------------------------------------------------------------------
SA1507 : CSharp.Layout : The code must not contain multiple blank lines in a row.
代碼部分存在多個空格
SA1600 : CSharp.Documentation : The method must have a documentation header.
方法必須要頭部說明,只要在方法前鍵入3個斜槓,IDE自動會根據該方法生成相關頭文檔說明。
SA1400 : CSharp.Maintainability : The class must have an access modifier.
類必須要有一個訪問修飾符,如:public、private等。
SA1513 : CSharp.Layout : Statements or elements wrapped in curly brackets must be followed by a blank line.
語句之間要有空行。
SA1202 : CSharp.Ordering : All private methods must be placed after all public methods.
私有方法要放在公有方法子後。
SA1650 : CSharp.Documentation : The documentation text within the summary tag contains incorrectly spelled words: 異常測試
這個是對中文支持的不夠好。拼寫檢查識別不到。
其他還有常見的變量首字母小,常量首字母大寫,等等常規檢查,其它規則請參見StyleCop使用說明。