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插件,后面会再作说明。
项目上配置有两种方式,能够采用咱们上面下载的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的配置检测中:
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插件里的写法
如如有误,欢迎交流