SonarQube, Checkstyle, PMD, SpotBugs, P3C 梳理了几个项目的关系,那么——
能否在8.4版本的SonarQube上使用P3C定义的规则?
No and Yes不能直接使用,需要做定制开发:将P3C-pmd集成或新创建一个类似sonar-pmd
的插件使用。
pmd、pmd的sonar插件问题
SQ对于PMD规则的采用插件的方式。根据兼容矩阵Plugin Version Matrix,目前支持的PMD的插件版本为3.2.1
从sonar-pmd插件的对应关系可以看到,3.2.1版本的插件对应的pmd版本为6.10.0 (目前PMD的最新版本为6.29)
name | version | version | version | version | version |
---|---|---|---|---|---|
PMD Plugin | 2.5 | 2.6 | 3.0.0 | 3.1.x | 3.2.x |
PMD | 5.4.0 | 5.4.2 | 5.4.2 | 6.9.0 | 6.10.0 |
Max. supported Java Version | 1.7 | 1.8 | 1.8 | 11 | |
Min. SonarQube Version | 4.5.4 | 4.5.4 | 6.6 | 6.6 |
p3c-pmd、p3c-pmd的插件问题
p3c-pmd是基于pmd 6.15版本 net.sourceforge.pmd:pmd-java:jar:6.15.0:compile
,这意味着SQ支持的pmd插件版本可以集成这个规则。
目前没有现成的插件,目前开源的插件——
- sonarqube中添加p3c-pmd整合阿里java开发规范使用的是1.3.6版本
-
sonar-p3c-pmd基于5.4版本,对应的插件版本为
2.6
,应用方式示例 - **sonar-p3c-pmd fork **,应用方式示例
- sonar-p3c-pmd fork官方的sonar-pmd插件。 可以借鉴这个版本查看如何进行集成
结论:改造SonarQube支持的sonar-pmd插件,使用p3c-pmd的插件规则,生成插件,提供给SonarQube使用。