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