Maven 與 Checkstyle
轉載請保留作者資訊:
作者:88250
日期:2010 年 7 月 20 日
- Maven 與 Checkstyle
- 概要
- 前提準備
- 樣本 POM
- 編碼規則配置
- 違反列舉
- Javadoc Tag
- Naming
- 結論
- 進一步閱讀
概要
Checkstyle 是一個協助 Java 開發人員在編寫代碼時能夠遵循編碼規範的工具。它可以自動檢查 Java 代碼風格,節省人工。本文以一項目樣本描述了基於 Maven
的項目使用 Checkstyle 的配置。
前提準備
- Maven2
基礎知識
- 安裝 Maven2
、NetBeans
(任意支援 Maven2 IDE 亦可)。
- 樣本項目:http://latke.googlecode.com/
樣本 POM
在樣本項目(假定根目錄為 /latke)的 pom.xml 中找到如下代碼:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>${maven-checkstyle-plugin.version}</version>
<configuration>
<configLocation>
${basedir}/etc/beyondtrack_checks.xml
</configLocation>
....
</configuration>
....
</plugin>
其中粗體標明了 Checkstyle 所使用的編碼規則設定檔。該項目使用 maven-checkstyle-plugin 版本為 2.5。
編碼規則配置
使用文字編輯器開啟項目根目錄(/latke)下的 etc 目錄下的 beyondtrack_checks.xml。該規則配置在 Sun
編碼規範的基礎上進行了一定的修改,放寬了某些限制,例如忽略了包文檔檢查;同時也加強了某些限制,例如使用 final 關鍵字修飾本地變數。
具體細節請參閱此檔案
。
違反列舉
Javadoc Tag
在規則檔案中尋找:
<module name="JavadocType">
<property name="authorFormat" value="/S"/>
<property name="versionFormat"
value="/d/./d/./d/./d, [A-Z]+[a-z]{2,2} /d{1,2}, /d/d/d/d"/>
</module>
該模組定義了對 Java 類與介面 Javadoc 注釋的檢查規則。假設該項目中某一 Java 類源碼如下:
/**
* This class defines all message model relevant keys.
*
* @author <a href="mailto:DL88250@gmail.com">Liang Ding</a>
* @version
1.0.0
, Jun 24, 2010
*/
public abstract class AbstractI18nModel {}
其中粗體標明了該類的版本,但由於規則檔案強制定義了版本格式(/d/./d/./d/./d
)為 4 位,所以在構建該項目時將輸出(行號、列號以實際為準,下同):
AbstractI18nModel.java:xx: Type Javadoc tag @version must match pattern '/d/./d/./d/./d, [A-Z]+[a-z]{2,2} /d{1,2}, /d/d/d/d'.
Naming
在規則檔案中尋找:
<module name="ConstantName" />
該模組定義了對常量命名的檢查,這裡使用了預設規則格式:^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$
。當某一欄位被 static final 修飾時,該欄位就是一個常量欄位,Checkstyle 將檢查是否滿足如上命名格式。
假設該項目中某一 Java 類源碼如下:
public final class Keys {
private static Locale defaultLocale;
/**
* Key of action status code.
*/
public static final String STATUS_
c
ODE = "sc";
}
該類欄位 STATUS_cODE 包含了一小寫字母,將違反常量命名規則,所以在構建該項目時將輸出:
Keys.java:xx:xx: Name 'STATUS_cODE' must match pattern '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.
結論
Checkstyle 可以對團隊編程時 Java 代碼的風格進行統一,有助於代碼品質提高。通過自訂其檢查規則配置可以讓團隊在特定項目的 Java 代碼風格上保持某種程度的一致。
進一步閱讀
- Maven Checkstyle Plugin
- Checkstyle