P3C-PMD自定义规则实战

本文介绍了阿里巴巴的P3C编码规范及其静态代码扫描工具,分析了使用P3C扫描代码时遇到的问题,如过多的不重要错误和未检测到的特殊bug。为了解决这些问题,文章详细阐述了如何自定义P3C规则,包括利用PMD设计器定位规则,通过继承AbstractJavaRule实现自定义逻辑,以及使用XPath方式定义规则。此外,还提及了编写单元测试和安装自定义插件的步骤,旨在帮助提升代码质量和研发效率。

前言

阿里巴巴公司推出了《Java编码规范》,并开发了对应的静态代码扫描工具p3c,支持流行的代码Java集成开发环境,例如IDEA、Eclipse。

p3c扫描某公司代码发现,“Major”以上的issues高达数千个(不可能花人力去fix,因为这些老代码都很稳定了),而有些业务Special bugs反而没有发现(比如数据库CDC中的message判空)。造成了研发质量难以提升,代码bug较多的严重后果。因此有必要自定义规则,去掉不重要的报错,增加Special bugs报错。

一、p3c-pmd

什么叫p3c-pmd?
p3c是阿里巴巴在pmd基础库基础上,二次开发的,专门给Java语言开发的,可视化的集成开发环境插件。它是阿里巴巴Java规范文档,规则的声明和定义,规则的Java实现,Eclipse、IDEA插件代码实现等等文档和工具的整体称呼。

pmd是p3c内部用到的一个库,是p3c最重要的代码检查能力提供者。它内部实现了AST语法树和各种工具和方法,并且实现了多语言的静态代码检查能力。

p3c-pmd是p3c开源项目的子模块(目录)。

p3c项目地址
pmd项目地址

1.1 AbstractJavaRule类

实现了接口JavaParserVisitor,此接口中一大堆visit方法,用来遍历AST树:

    Object visit(JavaNode var1, Object var2);

    Object visit(ASTCompilationUnit var1, Object var2);

    Object visit(ASTPackageDeclaration var1, Object var2);

    Object visit(ASTImportDeclaration var1, Object var2);

    
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值