sonar-pmd插件添加阿里p3c-pmd的规则

参考:http://younian.net.cn/article/143  和https://github.com/mrprince/sonar-p3c-pmd 项目做了一个包,扔到sonar[版本 6.5 (build 27846)]运行正常。

下载地址:sonar-pmd-plugin-2.7-SNAPSHOT.jar.zip

另外不足是,sonar-p3c-pmd项目里提供的描述文件,就是不够详细,没有中文,

要根据p3c-pmd里的重做有些累,能有就很好了,配合IDE插件基本效果还不错。

描述内容都在:p3c/p3c-pmd/src/main/resources/messages.xml(PS:如果有时间可以写个程序转

sonar效果

下)I

dea p3c规约扫描效果

最后拷贝下文章【http://younian.net.cn/article/143】

准备进行修改:

  1. 添加POM依赖包:
     
    1. <!-- https://mvnrepository.com/artifact/com.alibaba.p3c/p3c-pmd -->
    2. <dependency>
    3. <groupId>com.alibaba.p3c</groupId>
    4. <artifactId>p3c-pmd</artifactId>
    5. <version>1.3.0</version>
    6. </dependency>
    下面以一条Rule为例进行修改添加;
  2. 添加 pmd.properties

    rule.pmd.CommentsMustBeJavadocFormatRule.name=CommentsMustBeJavadocFormatRule

  3. 添加 rules.xml

     
    1. <rule key="CommentsMustBeJavadocFormatRule">
    2. <priority>MAJOR</priority>
    3. <configKey><![CDATA[rulesets/java/ali-comment.xml/CommentsMustBeJavadocFormatRule]]> </configKey>
    4. </rule>
  4. 添加pmd-model.xml文件(具体含义不详)

     
    1. <chc>
    2. <rule-repo>p3c</rule-repo>
    3. <rule-key>CommentsMustBeJavadocFormatRule</rule-key>
    4. <prop>
    5. <key>remediationFunction</key>
    6. <txt>CONSTANT_ISSUE</txt>
    7. </prop>
    8. <prop>
    9. <key>offset</key>
    10. <val>2</val>
    11. <txt>min</txt>
    12. </prop>
    13. </chc>
  5. 添加描述文件 — CommentsMustBeJavadocFormatRule.html.内容来自p3c对应xml 用于错误详情页面的展示

     
    1. <p>Look for qualified this usages in the same class.</p>
    2. <p>Examples:</p>
    3. <pre>
    4. /**
    5. *
    6. * XXX class function description.
    7. *
    8. */
    9. public class XxClass implements Serializable {
    10. private static final long serialVersionUID = 113323427779853001L;
    11. /**
    12. * id
    13. */
    14. private Long id;
    15. /**
    16. * title
    17. */
    18. private String title;
    19. /**
    20. * find by id
    21. *
    22. * @param ruleId rule id
    23. * @param page start from 1
    24. * @return Result<Xxxx>
    25. */
    26. public Result<Xxxx> funcA(Long ruleId, Integer page) {
    27. return null;
    28. }
    29. }
    30. </pre>

暂时是在原有基础上添加,没有删除现有部分rule

测试分析:

  1. 安装sonarqube:
    下载sonarqube并解压,需要java8,自带web服务器:
    将上面项目mvn package 出来的jar包拷贝到 sonarqube-6.5\extensions\plugins下面
    运行sonarqube-6.5\bin\windows-x86-64\StartSonar.bat

  2. admin/admin登录,会生成一个类似token的字符串

  3. 进入Quality Profiles,新建Quality Profiles保存。进入新建的Quality Profiles,
    点击左侧的ActiveMore,进入rules 找到刚添加的rule,列表右边会有active按钮,激活即可。
    (以下为官方Usage)

     
    1. Usage
    2. In the quality profile, activate some rules from PMD and run an analysis on your project. Set the sonar.java.source property to tell PMD which version of Java your source code complies to. The default value is 1.5. Possible values: 1.4, 1.5 or 5, 1.6 or 6, 1.7 or 7. Since version 2.2 of the plugin, this property can also be set to 1.8 or 8.
  4. 分析
    进入项目文件夹开始分析:Dsonar.login 就是上面的token

     
    1. D:\GreenPro\apache-maven-3.3.9\bin\
    2. mvn sonar:sonar -Dsonar.host.url=http://localhost:9000 -Dsonar.login=8f59dbbe29d160a9727038333d33acf31e11caea
  5. 切换Profiles
    跑第一遍后projects列表会有刚刚的项目,这时候可以去项目详情,Administratoration->Quality Profiles,切换Profile

  6. 然后再跑一边分析即可。

猜你喜欢

转载自my.oschina.net/greki/blog/1801462
PMD