CheckStyle 编写自己的代码检查插件

CheckStyle 编写自己的代码检查插件

checkstyle是用来检查Java代码很好用的工具,Maven中可以添加插件maven-checkstyle-plugin来使用checkstyle,官方默认给了两个检查配置文件 :sun、google。
本篇重点介绍 如何自定义检查文件来编写自定义的代码检查逻辑。

重点网站

  • checkStyle配置项介绍网站:https://checkstyle.org/index.html 在这个网站中 每一项配置及其作用和参数都有介绍,想自定义代码检查插件,这个必备。

从头开始

1.在pom中添加插件maven-checkstyle-plugin

            <!--maven-checkstyle-plugin -->
             <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <version>3.1.1</version>
                <configuration>
                    <configLocation>checkStyleConfig/stmtJavaFormatterMaven.xml</configLocation>
                    <consoleOutput>true</consoleOutput>
                    <detail>false</detail>
                </configuration>
            </plugin>

configLocation 配置自定义配置文件的位置,其他属性不多说明

2.编写一个最基本的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC
        "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
        "https://checkstyle.org/dtds/packages_1_0.dtd">

<module name="Checker">
  <module name="TreeWalker">
  </module>
</module>

很基础的xml结构,checker是最外层结构、TreeWalker是内侧结构。而需要添加检查就像搭积木一样,一项项加就ok了。

例如添加包检查、常量命名检查、空块检查:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC
        "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
        "https://checkstyle.org/dtds/packages_1_0.dtd">

<module name=" Checker">
    <module name=" TreeWalker">
        <!-- 包引用检查 -->
        <module name=" AvoidStarImport" />
   		<!-- 常量命名检查 -->
        <module name=" ConstantName" />
    	<!-- 空块检查 -->
        <module name=" EmptyBlock" />
    </module>
</module>

##3.常用maven命令来执行checkstyle

mvn checkstyle:help 查看帮助
mvn checkstyle:check 查看工程是否满足检查。如果不满足,检查失败,可以通过target/checkstyle-result.xml来查看
mvn checkstyle:checkstyle 查看工程是否满足检查。如果不满足,不会失败,可以通过target/site/checkstyle.html查看检查信息
mvn checkstyle:checkstyle-aggregate 检查工程是否满足检查。如果不满足,不会失败,可以通过target/site/checkstyle.html查看

当然你也可以通过配置pom文件来达到运行时检查的目的。

checkstyle常见配置项介绍

javaDoc

  • Parent Module:Checker
    <!-- JavadocPackage检查所有包是否具有包文档(包说明文档 package-info?)。 -->
    <module name=" JavadocPackage" />

Header

java文件开头版权声明

  • Parent Module:checker
 <module name="Header">
        <property name="headerFile"
            value="target/classes/header.txt" />
        <property name="ignoreLines" value="2,3,4"/>
        <property name="fileExtensions" value="java" />
 </module>

import

  • Parent Module:TreeWalker
        		<!-- 禁止*格式引用 默认false -->
                <module name="AvoidStarImport" />
                <!-- 禁止引用的包 -->
                <module name="IllegalImport">
                    <property name="illegalPkgs" value="java.lang" />
                </module>
                <!-- 检测冗余导入,java.lang的引用也属于冗余的一种 -->
                <module name="RedundantImport" />
                <!-- 检查未使用的包 -->
                <module name="UnusedImports" />
                <!-- 检查静态引用,默认false -->
                <!-- <module name="AvoidStaticImport" /> -->
                <!-- 导入包分组、组内排序、组间排序 -->
                <module name="CustomImportOrder">
                    <!-- 设置强制按字母顺序分组 -->
                    <property name="sortImportsInGroupAlphabetically"
                        value="true" />
                    <!-- 分组之间要求使用空格隔开 -->
                    <property name="separateLineBetweenGroups"
                        value="true" />
                    <!-- 特殊引入匹配 -->
                    <property name="specialImportsRegExp"
                        value="^org\." />
                    <!-- 第三方包引入匹配 -->
                    <property name="thirdPartyPackageRegExp"
                        value="^com\." />
                    <!-- 分组顺序 -->
                    <property name="customImportOrderRules"            value="STATIC###STANDARD_JAVA_PACKAGE###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE" />
                </module>

结语

本篇没有详细介绍checkstyle每一项配置项的含义和用法也没这个必要,参考给的重点网站,一步步来一定没有什么问题。偶现问题有:checkstyle属性说明的参数添加在maven-checkstyle-plugin中后运行 mvn checkstyle:checkstyle显示找不到该属性,猜测原因是maven-checkstyle-plugin没有更新到checkstyle最新的版本。

有什么问题请留言~🎉

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值