Maven 与 Checkstyle

来源:互联网 发布:mac彻底删除模拟人生 编辑:程序博客网 时间:2024/04/29 21:13

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_cODE = "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
原创粉丝点击