CheckStyle是一個很有趣的開源框架,他可以幫助檢查Java代碼中的代碼規范,傳統的代碼檢查是一種很無聊的工作,而且無法全面的去檢查,而大公司一般都會定期的進行代碼檢查,不想做也不行,怕被別人找麻煩。而CheckStyle就是一個可以幫助我們自動去檢查Java代碼的工具,替我們分擔了不少無聊(但也是重要)的工作。
?
CheckStyle是一個高度可配置(通過XML配置需要檢查的規范),他不但是免費的軟件,而且還是一個開源的軟件
?
在CheckStyle的軟件包里面還包括很多有名的代碼規范,如 Sun Code Conventions (Sun公司的代碼規范),其他的例子其實也都是有名的代碼規范。
?
CheckStyle可以檢查你的代碼中的很多方面,以前它只是用來檢查規范,但在版本3后,很多的規則被添加進來,以致它開始可以用來檢查Java代碼中的一些程序缺陷。
?
CheckStyle的源程序以及編譯好的軟件包可以在SourceForge里面下載,下載的地址是:
?
http://sourceforge.net/project/showfiles.php?group_id=29721
?
你也可以從SVN上去獲取CheckStyle最新的代碼
?
相關工具:
?
CheckStyle可以在命令行或者Ant里運行
?
另外,Eclipse和NetBean上都可以找到CheckStyle的插件
?
?
CheckStyle最新的版本是5.1
?
CheckStyle的配置
?
CheckStyle的配置主要配置哪些規則會被應用到代碼的檢查中,規則用XML來配置,所以規則都會添加在Root 的Module里面,也就是說Root是最根本的級別。
?
TreeWalker:在TreeWalker里面定義的Module會在輪流在源碼所以解析成的語法樹里面去驗證規則
?
接下來是一個典型的配置文檔
?
![]() |
<module name="Checker"> <module name="JavadocPackage"/> <module name="TreeWalker"> <module name="AvoidStarImport"/> <module name="ConstantName"/> <module name="EmptyBlock"/> </module> </module> |
?
JavadocPackage是一個很奇怪的檢查,他檢查文件的目錄上是不是有一個package-info.java,一個是Java1.5后的一個新功能,目錄是讓所有的包都有一個共同的注釋。
?
Module TreeWalker里面有三個子Module,分別是AvoidStarImport(不允許*導入,也就是類要一個一個導),ConstantName(變量命名規則,這個規則基本上是通用的),EmptyBlock。
?
對于每一個Module,CheckStyle都會加載一個規則類來處理,以下是幾條CheckStyle加載類的規則
?
1. 直接導入,如果是已經定義了包名的規則類,CheckStyle直接把這個包與類名導入
?
2. 如果沒有定義包名,則會自動在包 com.puppycrawl.tools.checkstyle.checks找到相應的類
?
3. 會自動在類名后自動加Check,如果類名后沒有Check的話
?
Module的屬性
?
我們是可以在Module里面定義屬性的,這樣我們才可以更好的定義規則。
?
比如:
?
<module name="MethodLength"> <property name="max" value="60"/> </module>
?
這個Module表示檢查方法的長度不可以超過60行,這里定義了一個max屬性
?
TreeWalker下的規則
?
TreeWalker下的規則都是和語法樹有關的規則
?
比如:
?
<module name="MethodLength"/>
?
這里是檢查方法的長度,方法屬于語法樹的范圍,默認的屬性是 {METHOD_DEF, CTOR_DEF} (構造方法與普通方法都檢查),如果改成這樣
![]() |
<module name="MethodLength"> <property name="tokens" value="METHOD_DEF"/> </module> <module name="MethodLength"> <property name="tokens" value="CTOR_DEF"/> <property name="max" value="60"/> </module> |
?
這樣就會把普通方法與構造方法分開來檢查
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
