CheckStyle自定义校验规则的Maven集成

本文档介绍了如何开发一个禁止引入特定包的CheckStyle自定义规则,并将其与Maven工程结合,通过maven-checkstyle-plugin进行集成。内容包括创建规则实现、配置文件、打包安装、校验工程的绑定以及结果测试。特别指出,虽然官方建议不需指定包名,但在实际配置中仍需明确指定以使规则生效。
摘要由CSDN通过智能技术生成

最近工作做中需要利用maven在编译打包的时候增加自定义的校验,如果引入了特定的包要生成非法引用报告。研究过后准备使用maven-checkstyle-plugin插件来进行开发。参考了官方的说明,但是说的不是很明白,故在此以自己的角度进行整理总结。 官方参考文档如下:

自定义开发checkstyle校验规则

checkstyle开发说明

<font color=red >PS:本文档只描述在工程pom文档里进行install时的配置开发说明;因为网上很多例子,插件执行执行的方式不在此赘述。</font>

本文档版本依赖
<dependency>
    <groupId>com.puppycrawl.tools</groupId>
	<artifactId>checkstyle</artifactId>
	<version>7.3</version>
</dependency>

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-checkstyle-plugin</artifactId>
    <version>2.17</version>
</plugin>

开发自定义校验规则

新建maven工程,该工程内开发自己的maven插件检验规则代码。<font color=red >校验规则:不允许在业务工程中直接引入com.alibaba.fastjson包</font>

先写一个简单的具体实现
package net.genez.customck.check;

import com.puppycrawl.tools.checkstyle.api.AbstractCheck;
import com.puppycrawl.tools.checkstyle.api.DetailAST;
import com.puppycrawl.tools.checkstyle.api.FullIdent;
import com.puppycrawl.tools.checkstyle.api.TokenTypes;

public class ImportCheck extends AbstractCheck {
    //本校验器默认接收的ast类型
    public int[] getDefaultTokens() {
	    return new int[] {TokenTypes.IMPORT, TokenTypes.STATIC_IMPORT};
    }

    public void visitToken(DetailAST ast) {
        if (ast.getType() == TokenTypes.IMPORT || ast.getType() == TokenTypes.STATIC_IMPORT){
            final FullIdent name = FullIdent.createFullIdentBelow(ast);
            if(name.getText().startsWith("com.alibaba.fastjson")){
                //输出到report的描述
                log(ast.getLineNo(),"不允许直接使用com.alibaba.fastjson");
            }
        }
    }
}

pom文件引用

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值