一、sonarqube简介
Sonar是一个用于代码质量管理的开源平台,用于管理Java源代码的质量。通过插件机制,Sonar
可以集成不同的测试工具,代码分析工具,以及持续集成工具,比如pmd-cpd
、checkstyle
、findbugs
、Jenkins
。通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。同时 Sonar
还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar
。 此外,Sonar
的插件还可以对 Java
以外的其他编程语言提供支持,对国际化以及报告文档化也有良好的支持。
二、pmd插件整合阿里开发规则
sonar-pmd是sonar官方的支持pmd的插件,但是还不支持p3c,需要在pmd插件源码中添加p3c支持(p3c是阿里在pmd基础上根据阿里巴巴开发手册实现了其中的49开发规则)。
参考文章: https://my.oschina.net/greki/blog/1801462
源码下载地址:https://github.com/mrprince/sonar-p3c-pmd,此源码工程已经在pmd插件的默认268条规则上添加了阿里的48条规则,少了一条AvoidManuallyCreateThreadRule
并在pmd插件的默认268条规则上添加了阿里的48条规则,阿里的p3c实现了49条阿里开发规范规则,此工程中少了一条AvoidManuallyCreateThreadRule规则,只需要将sonar-p3c-pmd工程中的默认的268条规则屏蔽掉,添加AvoidManuallyCreateThreadRule 规则,就是我们现在的含有49条阿里开发规则的 pmd插件。
sonar-p3c-pmd工程工程源码改法
- 一条校验规则对应分别对应3个配置文件:
- src\main\resources\org\sonar\l10n\pmd.properties
- src\main\resources\org\sonar\plugins\pmd\rules.xml
- src\main\resources\com\sonar\sqale\pmd-model.xml
- 首先注释掉pmd中原默认的268条规则。例如屏蔽掉pmd中原来默认的
StringInstantiation
规则。
①. 首先注释掉pmd.properties文件中的
注意:规则配置在pmd.properties文件中是以 .name 结尾,不要多注释掉其它的以 .param.xxx结尾的配置,否则可能导致打出的jar包放到sonar下时sonar启动失败 )
②. 注释掉rules.xml中的 StringInstantiation对应的配置
③. 注释掉pmd-model.xml中的StringInstantiation对应的配置
这样就屏蔽掉了一条默认的pmd规则。
- 添加阿里的开发规则,为了区别阿里的p3c规则,这里新建了一个rules-p3c.xml文件。
然后在PmdRulesDefinition类中指定一下rules-p3c.xml 路径
添加阿里的规则,例如添加CommentsMustBeJavadocFormatRule 规则。 ①. 在 pmd.properties中添加
rule.pmd.CommentsMustBeJavadocFormatRule.name=CommentsMustBeJavadocFormatRule
②. 在 rules-p3c.xml中添加
③. 在pmd-model.xml中添加
④. 添加描述文件— CommentsMustBeJavadocFormatRule.html
.内容来自p3c对应xml
用于错误详情页面的展示
-
修改p3c的提示语,如leader要求添加 PASS-ALI 前缀,下载p3c-pmd源码 https://github.com/alibaba/p3c,描述内容都在p3c/p3c-pmd/src/main/resources/messages.xml,在messages.xml中每条规则的提示语前添加前缀 PASS-ALI: 。
然后将p3c-pmd打包,装到本地仓库
mvn clean install -Dgpg.skip
,重新打包sonar-p3c-pmd
工程,将打好的jar包放到sonarqube
的..\extensions\plugins
目录下,重启sonarqube。即可安装好整合好只含有阿里开发规则的pmd插件。 -
如果想修改pmd插件在
sonarqube
中的插件显示名,可以修改sonar-p3c-pmd
工程中的PmdConstants
类Sring REPOSITORY_NAME
名字即可
本文由 创作,采用 知识共享署名4.0 国际许可协议进行许可。本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。最后编辑时间为: 2020/05/17 02:22