sonar集成ail-p3c插件
背景
《阿里巴巴Java开发手册》自从第一个版本起,倍受业界关注,很多人甚至希望能尽快在自己的团队推行起来,让团队有一套共同的开发准则。基于这套准则,我们希望达到以下两个要求:
1.以插件的形式集成到java的IDE开发环境(IDEA、Eclipse),用于开发人员的代码自检。
2.将该开发规范集成到sonar的规则库,同时和gitlab-ci集成,制定阈值规则,不满足要求,pipline执行失败。
如何实现
插件导入IDE
阿里巴巴开发了一套自动化的IDE检测插件(IDEA、Eclipse), 该插件在扫描代码后,将不符合《手册》的代码按Blocker/Critical/Major三个等级显示在下方,甚至在IDEA上,还基于Inspection机制提供了实时检测功能,编写代码的同时也能快速发现问题所在。对于历史代码,部分规则实现了批量一键修复的功能。
代码已经开源,GitHub:https://github.com/alibaba/p3c
打开IDEA,选择Preferences - Plugins - Browse repositories后,在输入框中输入"alibaba",可以看到返回结果中有"Alibaba Java Coding Guidelines"。
制作sonar插件
1.在github找到一个p3c的sonar插件开源项目,https://github.com/mrprince/sonar-p3c-pmd,导入工程后,修改规则名org.sonar.plugins.pmd.PmdConstants,REPOSITORY_NAME为规则名称PMD_wwyl。
插件打包:mvn clean package sonar-packaging:sonar-plugin -Dmaven.test.skip=true
2.将生成的插件放到/extensions/plugins
3.重启sonar,需切到非root账号,先启动es服务, ./elasticsearch -d 再启动sonar服务./sonar.sh start
4.查看sonar和es服务日志是否正常
5.sonar规则增加了p3c,完工。