Maven 与 Checkstyle

本文介绍了如何利用Maven和Checkstyle实现Java代码的编码规范统一,通过配置示例和违反列举,展示了如何提高代码质量。通过自定义规则配置,团队能在特定项目中保持Java代码风格一致性。

转载请保留作者信息:

作者:88250

日期:2010 年 7 月 20 日

 

概要

     Checkstyle 是一个帮助 Java 开发人员在编写代码时能够遵循编码规范的工具。它可以自动检查 Java 代码风格,节省人工。本文以一项目示例描述了基于 Maven 的项目使用 Checkstyle 的配置。

前提准备

示例 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 代码风格上保持某种程度的一致。

进一步阅读

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值