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

最近工作做中需要利用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
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`MemberName` 模块是 Checkstyle 中的一个检查模块,用于检查类成员(字段、方法、内部类等)的命名规范。它可以检查成员的命名是否符合以下规则: - 长度是否符合要求; - 是否使用了正确的命名风格,比如驼峰命名法; - 是否使用了正确的前缀或后缀; - 是否使用了正确的命名约定,比如常量应该全部大写等。 如果需要自定义 `MemberName` 模块的检查规则,可以通过配置 `MemberName` 模块的子元素来实现。例如,可以通过以下配置将 `MemberName` 模块的 `applicableMemberAccess` 属性设置为 `public,protected,private`,表示只检查公共、保护和私有成员: ```xml <module name="MemberName"> <property name="format" value="^[a-z][a-zA-Z0-9]*$" /> <property name="applicableMemberAccess" value="public,protected,private" /> </module> ``` 此外,还可以通过配置 `MemberName` 模块的 `tokens` 属性来指定要检查的成员类型。默认情况下,它会检查所有类型的成员,但是可以通过将 `tokens` 属性设置为只包含需要检查的成员类型来减少检查的范围。例如,以下配置只会检查字段和方法的命名: ```xml <module name="MemberName"> <property name="format" value="^[a-z][a-zA-Z0-9]*$" /> <property name="tokens" value="VARIABLE_DEF,METHOD_DEF" /> </module> ``` 最后,需要注意的是,自定义 `MemberName` 模块的检查规则时,应该遵循一定的命名约定,以保证代码的可读性和一致性。常见的命名约定有驼峰命名法、帕斯卡命名法、下划线命名法等,具体选择哪种命名约定应该根据项目的实际情况来确定。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值