Android Studio中集成sonarQube添加阿里开发规范PMD插件

1、sonarQube能作什么

Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量。官网 默认支持Java语言的静态代码审查,能够经过添加插件的方式来支持绝大多数主流开发语言的代码审查,插件地址。还能够跟代码检查工具Android Lint,FindBugs,PMD等、持续集成工具Jenkins,Hudson集成起来。经过用户加载的插件检测再对结果加工处理,以量化的方式去度量代码质量的变化。

2、准备工做

安装准备工做,以win10平台下Android为例,其余系统参考官网SonarQube SetUp:

1.JDK8以上;

2.SonarQube7.0,在网页末尾处找到Historical Downloads,show all versions

3.SonarQube Scanner ,也可替换为sonar-runner

4.sonar-l10n-zh github上的SonarQubeCommunity支持了官网国际化,须要加载插件实现

5.数据库(非必需)

3、配置

1.解压缩SonarQube和SonarQube Scanner,将下载好的sonar-l10n-zh放到SonarQube安装目录下的extensions\plugins文件夹中,运行SonarQube目录下面bin文件夹下对应于本身系统的StartSonar.bat就能够了,例如个人路径是:D:\Sonar\sonarqube-7.0\sonarqube-7.0\bin\windows-x86-64,成功运行后打开浏览器输入http://localhost:9000/,用户名和密码默认admin,进入之后就打开Sonar页面了。默认语言是中文,只不过中文化有些不完全。 java

2.打开SonarQube目录下conf文件夹下的sonar.properties,配置:git

sonar.sorceEncoding=UTF-8github

sonar.login=admin数据库

sonar.password=adminwindows

3.进入解压缩后的Scanner目录,将bin路径加入到环境变量path中进行配置,而后打开Scanner目录下的sonar-scanner.properties文件,配置:浏览器

sonar.sorceEncoding=UTF-8bash

sonar.login=adminapp

sonar.password=admin工具

sonar.scm.disablied=truegradle

配置完成以后,运行cmd,输入sonar-scanner -version,看到版本信息就说明配置成功了

4.登录成功后,进入到配置 -> Marketplace -> 搜索Android安装,或者下载离线包,将离线包插件放到SonarQube的extensions\plugins目录下,此处我已安装好,如图所示:

安装完成以后,能够在质量配置里面设置Java默认检测规范:

这里能够看到默认是P3C,即为阿里开发规范的PMD插件,后面会再作说明。

4、项目配置以及运行Sonar分析

项目上配置有两种方式,能够采用咱们上面下载的SonarQube Scanner,或者在Android Studio中的顶层build.gradle中使用(推荐)。下面分别介绍:

1.使用SonarQube Scanner,在项目根目录下,新建sonar-project.properties文件,配置如下信息:

sonar.projectKey=P3CDemo

sonar.projectName=P3CDemo

sonar.projectVersion=1.0

sonar.sources=app/src/main/java

sonar.binaries=app/build/intermediates/classes/

sonar.language=java

sonar.sourceEncoding=UTF-8

sonar.profile=Android Lint

打开cmd,进入项目所在根目录,输入命令:sonar-runner,分析成功后出现:EXECUTION SUCCESS

注意在scanner过程当中,以前开启的StartSonar.bat不能关闭

以后就能够在Sonar界面看到项目的质量分析图了:

2.在Android Studio中配置Sonar插件:

在AS中打开setting-Plugins-Browse repositories,搜索sonar,点击SonarLint安装。

而后在Other Settings下面配置Server信息,新建一个SonarQube Server用于设置链接服务,设置完成之后能够点击update binding尝试链接一下 在test binding的时候可能会出现提示某个插件版本比较低的状况,能够在sonar plugin中有针对性下载更新插件。

在下拉框中选择Login/Password帐号密码登录

接下来在SonarLint Project Settings,勾上enable选项,选择刚才新建的那个Server,选择SonarQube project(这个project应该是以前在第二步Sonar-runner 分析过的,server里面有记录的)。

各位看官不要着急,仅剩下最后一步便可完成配置了。

在Android Studio项目层级的build.gradle文件中,设置:

在buildscript后添加:

plugins {
    // 添加插件信息
    id "org.sonarqube" version "2.6.2"
}

subprojects {
    sonarqube {
        properties {
            property "sonar.host.url", "http://localhost:9000/"
            property "sonar.sourceEncoding", "UTF-8"
            property "sonar.projectKey", "MOGUTest"
            property "sonar.projectName", "MOGUTest"
            property "sonar.projectVersion", "1.0"
            property "sonar.sources", "src/main/java"
            property "sonar.binaries", "build/intermediates/classes"
        }
    }
}
复制代码

这里须要注意,在sonar.source以及sonar.binaries后文件位置去掉了app/ 区别于sonar-project.properties的配置

至此,能够执行代码检测任务了: 在目录下命令行执行 ./gradlew.sh sonarqube或者执行gradle中的project -> other -> sonarqube

能够在sonar中看到项目代码质量基于sonar java或者Android Lint检测的结果。接下来咱们看如何实现将阿里巴巴规范的插件加入带sonar的配置检测中:

4、阿里开发规范之PMD插件整合

sonar-pmd是sonar官方的支持pmd的插件,可是还不支持p3c,须要在pmd插件源码中添加p3c支持(p3c是阿里在pmd基础上根据阿里巴巴开发手册实现了其中的49开发规则)。github上已有的sonar-p3c-pmd地址:github.com/mrprince/so… ,在wiki中有具体安装说明,须要从新编译jar包。 目前阿里P3C-PMD中java规则有53条,能够从此处查找已编译好的sonar-pmd插件,将插件放到sonarQube的extensions\plugins目录下,在sonar上找到配置 -> 系统 -> Restart Server

重启成功再次登录后,在质量配置里面建立一个新的代码规则来匹配P3C的标准:

此时的P3C规则还未激活,而且没有规则制度,所以须要在sonar中查到到符合P3C的规则进行批量修改:

首先激活P3C,点击P3C红色未激活处,变为绿色已激活状态便可,接下来进行批量修改

此处为已添加效果,未添加或者要新添加规则均可以经过批量修改进行导入。

将P3C设为默认代码检测规范,执行gradle,此处写了一个阻断类型的代码(坏味道)来检测有效性:

对于如何添加团队定制的代码规范,能够参考上面下载的P3C-PMD插件里的写法

如如有误,欢迎交流

相关文章
相关标签/搜索