SonarQube整合alibaba编码规范

简书 · · 3658 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

一、sonarqube简介

Sonar是一个用于代码质量管理的开源平台,用于管理Java源代码的质量。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具,比如pmd-cpd、checkstyle、findbugs、Jenkins。通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。同时 Sonar 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar。 此外,Sonar 的插件还可以对 Java 以外的其他编程语言提供支持,对国际化以及报告文档化也有良好的支持。

我们需要做的是将阿里的p3c开发规则以插件形式集成到sonar-pmd中,然后将sonar-pmd打包放到sonarQube的插件包目录下

二、SonarQube使用p3c

我这里已经实现了一版将p3c集成到soanr-pmd中,本人SonarQube版本是sonarqube-7.3,第三节会介绍具体pmd插件整合自定义开发规则的步骤
https://github.com/slowwalkerlcr/sonar-p3c-pmd/tree/pmd_alibaba
使用方法:直接将上面的源码使用maven打包后将sonar-pmd-plugin-3.2.0-SNAPSHOT.jar放入到SonarQube的Sonarqube-7.3/extensions/plugins/目录下重启SonarQube即可
下面是SonarQube效果

image.png

三、pmd插件整合阿里开发规则步骤

  • 1、在sonar官方的支持pmd的插件sonar-pmd的基础上修改,pom里添加p3c-pmd的支持
   <dependency>
      <groupId>com.alibaba.p3c</groupId>
      <artifactId>p3c-pmd</artifactId>
      <version>2.0.0</version>
    </dependency>
  • 2、sonar-p3c-pmd工程工程源码改法
  • (1)一条校验规则对应分别对应3个配置文件 pmd.properties (src\main\resources\org\sonar\l10n\), rules.xml(src\main\resources\org\sonar\plugins\pmd\), pmd-model.xml(src\main\resources\com\sonar\sqale\)。
  • (2) 首先注释掉pmd中原默认的规则。例如屏蔽掉pmd中原来默认的 StringInstantiation规则。
    ①首先注释掉pmd.properties文件中的


    image.png

    ②注释掉rules.xml中的 StringInstantiation对应的配置


    image.png

    ③注释掉pmd-model.xml中的StringInstantiation对应的配置
    image.png

这样就屏蔽掉了一条默认的pmd规则。

(3)添加阿里的开发规则,为了区别阿里的p3c规则,这里新建了一个rules-p3c.xml文件。


image.png

然后在PmdRulesDefinition类中指定一下rules-p3c.xml 路径

image.png

添加阿里的规则,例如添加CommentsMustBeJavadocFormatRule 规则。
①在 pmd.properties中添加

rule.pmd.CommentsMustBeJavadocFormatRule.name=CommentsMustBeJavadocFormatRule

②在 rules-p3c.xml中添加

image

③在pmd-model.xml中添加

image.png

④添加描述文件— CommentsMustBeJavadocFormatRule.html.内容来自p3c对应xml 用于错误详情页面的展示

<p>类、类属性、类方法的注释必须使用javadoc规范,使用/**内容*/格式,不得使用//xxx方式和/*xxx*/方式。</p>
<p>说明:在IDE编辑窗口中,javadoc方式会提示相关注释,生成javadoc可以正确输出相应注释;在IDE中,工程调用方法时,不进入方法即可悬浮提示方法、参数、返回值的意义,提高阅读效率。</p>
<p>Examples:</p>
<pre>
    /**<br>
     *<br>
     * XXX class function description.<br>
     *<br>
     */<br>
    public class XxClass implements Serializable {<br>
        private static final long serialVersionUID = 113323427779853001L;<br>
        /**<br>
         * id<br>
         */<br>
        private Long id;<br>
        /**<br>
         * title<br>
         */<br>
        private String title;<br>
    <br>
        /**<br>
         * find by id<br>
         * <br>
         * @param ruleId rule id<br>
         * @param page start from 1<br>
         * @return Result&lt;Xxxx&gt;<br>
         */<br>
        public Result&lt;Xxxx&gt; funcA(Long ruleId, Integer page) {<br>
            return null;<br>
        }<br>
    }
</pre>

重新打包sonar-p3c-pmd工程,将打好的jar包放到sonarqube的 ..\extensions\plugins目录下,重启sonarqube。即可安装好整合好只含有阿里开发规则的pmd插件。
(4)如果想修改pmd插件在sonarqube中的插件显示名,可以修改 sonar-p3c-pmd 工程中的PmdConstants类 Sring REPOSITORY_NAME 名字即可
SoanrQube效果图


image.png

image.png

参考链接

本文来自:简书

感谢作者:简书

查看原文:SonarQube整合alibaba编码规范

3658 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传