大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说Android Studio中集成sonarQube添加阿里开发规范PMD插件[通俗易懂],希望您对编程的造诣更进一步.
一、sonarQube能做什么
Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量。官网 默认支持Java语言的静态代码审查,可以通过添加插件的方式来支持绝大多数主流开发语言的代码审查,插件地址。还可以跟代码检查工具Android Lint,FindBugs,PMD等、持续集成工具Jenkins,Hudson集成起来。通过用户加载的插件检测再对结果加工处理,以量化的方式去度量代码质量的变化。
二、准备工作
安装准备工作,以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.数据库(非必需)
三、配置
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页面了。默认语言是中文,只不过中文化有些不彻底。
2.打开SonarQube目录下conf文件夹下的sonar.properties,配置:
sonar.sorceEncoding=UTF-8
sonar.login=admin
sonar.password=admin
3.进入解压缩后的Scanner目录,将bin路径加入到环境变量path中进行配置,然后打开Scanner目录下的sonar-scanner.properties文件,配置:
sonar.sorceEncoding=UTF-8
sonar.login=admin
sonar.password=admin
sonar.scm.disablied=true
配置完成之后,运行cmd,输入sonar-scanner -version,看到版本信息就说明配置成功了
4.登陆成功后,进入到配置 -> Marketplace -> 搜索Android安装,或者下载离线包,将离线包插件放到SonarQube的extensions\plugins目录下,此处我已安装好,如图所示:
安装完成之后,可以在质量配置里面设置Java默认检测规范:
这里可以看到默认是P3C,即为阿里开发规范的PMD插件,后面会再做说明。
四、项目配置以及运行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的配置检测中:
四、阿里开发规范之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插件里的写法
如若有误,欢迎交流
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/13917.html