zoukankan      html  css  js  c++  java
  • Maven 与 Checkstyle

    Maven 与 Checkstyle

    转载请保留作者信息:

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

    进一步阅读

  • 相关阅读:
    LOJ#6031. 「雅礼集训 2017 Day1」字符串
    LG P4768 [NOI2018] 归程
    LG P3250 [HNOI2016]网络
    BZOJ4644 经典傻逼题
    LG P4373 [USACO18OPEN]Train Tracking P
    CF1375H Set Merging
    LG P6541 [WC2018]即时战略
    CF1097G Vladislav and a Great Legend
    python学习笔记-基本概念
    python学习笔记十-文件操作
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6468788.html
Copyright © 2011-2022 走看看