Maven 與 Checkstyle

來源:互聯網
上載者:User
Maven 與 Checkstyle

 

轉載請保留作者資訊:

作者:88250

日期:2010 年 7 月 20 日

  1. Maven 與 Checkstyle

    1. 概要
    2. 前提準備
    3. 樣本 POM
    4. 編碼規則配置
    5. 違反列舉
      1. Javadoc Tag
      2. Naming
    6. 結論
    7. 進一步閱讀

 


概要

     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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.