前言
阿里巴巴公司推出了《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开源项目的子模块(目录)。
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);

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

被折叠的 条评论
为什么被折叠?



