CheckStyle的使用及其在Eclipse中的集成
這里的有些check有個公共的屬性tokens,意思是該check應用的范圍,例如同樣是檢查方法的長度,普通方法可能最多可以有150行,而構造函數(shù)則最多只能有60行。這時,雖然同樣是使用MethodLength這個check,但是可以用tokens這個屬性進行區(qū)分,如下xml文件的片段:
這其中應用了兩次MethodLength,***次的tokens定義為METHOD_DEF,即普通的方法;第二次的tokens定義為CTOR_DEF,即構造函數(shù),并且在此定義了與缺省值不同的值,即60。這樣CheckStyle可以根據(jù)方法的種類不同而執(zhí)行不同的check策略。CheckStyle也定義了大量的諸如CTOR_DEF形式的tokens類型,應用于不同的check中的tokens,其定義在com.puppycrawl.tools.checkstyle.api.TokenTypes類中。這些Tokens實際上是對源代碼文件進行拆分后做對應的時候的一些標志,類似編譯中的語法分析,CheckStyle的原理應該就是在對源代碼做語法分析后,針對這些Tokens的內(nèi)容,比對預先設定好的代碼寫作策略,并給出對比的結果。TokenTypes類內(nèi)容很多,這里就不一一列舉了。
下面是對具體的check的描述。這些check可以被分為了15類,如下所示:
===== CHECK STYLE ========
----- Annotations -------- JDK5中的Annotation相關(未展開)
----- Block Checks ------- 代碼塊相關
----- Class Design ------- 類設計相關
----- Coding ------------- 編碼相關
----- Duplicate Code ----- 冗余代碼
----- Headers ------------ 源文件的頭
----- Imports ------------ 引入包相關
----- Javadoc Comments --- JavaDoc相關
----- Metrics ------------ 復雜度分析
----- Miscellaneous ------ 其它
----- Modifiers ---------- 修飾符相關
----- Naming Conventions - 命名規(guī)范
----- Regexp ------------- 正則表達式相關
----- Size Violations ---- 文件大小等相關
----- Whitespace --------- 空格處理相關
==========================
具體的內(nèi)容由于比較多,我寫在了一個單獨的WORD文檔中。有了這些預置的check,基本可以滿足規(guī)范編碼的要求了。在Myeclipse的環(huán)境下,可以通過對Formatter的定義,在format的過程中可以自動滿足一些check的要求,這部分我會在《應用CheckStyle檢查代碼和Formatter規(guī)范代碼》中予以詳細說明。
【編輯推薦】