一直想使用CI进行敏捷开发,前段时间使用了jenkins,已达到编译,发布,使用jmeter自动化测试的效果,但代码质量一直没有一个好的工具进行评估、检查。后来同事介绍使用sonarqube是一个不错的选择,我觉得可以一试。折腾了一天,基本上可行了,但网上的资料有些是基于老版本的说明,耽误不少工夫,现将我的经历写出来,供大家分享,有问题大家可以随时沟通。谢谢。
致谢:
(1)、https://blog.csdn.net/aixiaoyang168/article/details/77565756 (sonarqube我基本参考这篇文章完成,但这篇也有些是行不通的)
(2)、https://blog.csdn.net/hc_ttxs/article/details/79384535 (jenkins有这篇也基本可以)但有一个地方作者可能是笔误(文章为下述部分有误,应该是我这个):
set "JAVA_OPTS=-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8"
正文:
(0)、整体步骤
准备工作--》下载sonarqube--》修改配置文件,让sonarqube支持mysql--》安装插件--》修改maven 的settings.xml文件--》在jekins下安装sonarqube插件,并配置jenkins的sonarqube插件--》查看结果。
(1)、准备工作
安装jdk与mysql(可以不安装,使用自带的h2,但不推荐)
jdk:1.8u144
mysql:5.7.20
maven:3.5.0
sonarqube:6.7.3(因为这个是LTS版本,目前最新版本为7.0)
(2)、下载sonarqube
下载6.7.3并解压,各个目录的含义如下:
![](https://i-blog.csdnimg.cn/blog_migrate/9bc4bbef7000511ce4d8f3b98e2eab10.png)
进行目录 :sonarqube-6.7.3\bin\windows-x86-64
运行:startsonar.bat,结果如下:
![](https://i-blog.csdnimg.cn/blog_migrate/d32d7f48fc460f0e49e5bc7678f580c2.png)
在本机流程器中输入如下内容:
![](https://i-blog.csdnimg.cn/blog_migrate/0728907bee198921fb35f69a06e8b856.png)
至此,证明sonarqube能够正式运行了。默认管理员的用户与密码为:admin/admin
(3)、在上图中,按ctrl+c,停止sonarqube,修改mysql为数据库
![](https://i-blog.csdnimg.cn/blog_migrate/99455b81aa025ba0b16c12f9bdd03599.png)
打开sonarqube-6.7.3\conf\sonar.properties文件,修改如下:
![](https://i-blog.csdnimg.cn/blog_migrate/9e7009ffdc23a18d68c1b5dce3fd8453.png)
进入mysql命令行:
输入如下命令
CREATE
DATABASE
sonar
CHARACTER
SET
utf8
COLLATE
utf8_general_ci;
CREATE
USER
'sonar'
IDENTIFIED
BY
'sonar'
;
GRANT
ALL
PRIVILEGES
ON *.*
TO
'sonar'@
'%' IDENTIFIED
BY
'sonar'
WITH
GRANT
OPTION;
GRANT
ALL
PRIVILEGES
ON *.*
TO
'sonar'@
'localhost' IDENTIFIED
BY
'sonar'
WITH
GRANT
OPTION;
FLUSH PRIVILEGES;
至此数据库设置完成,重新启动sonarqube即可。输入admin:admin后,会有个设置,如下所示。
![](https://i-blog.csdnimg.cn/blog_migrate/2a253066fee6dbb0e162d6bd046030a9.png)
(4)、安装插件 (下载两个附件,直接将文件拷贝到extensions\plugin目录,可略过本节,重启sonarqube即可)
a.安装chinese插件
目前来看,直接从官方网站下载好像是不行的。
如下所示:
![](https://i-blog.csdnimg.cn/blog_migrate/c82efaae5fec3ca61117e97f5564767a.png)
到chinese的网站:
https://github.com/SonarQubeCommunity/sonar-l10n-zh
查看兼容性问题,如下表所示(6.7的需要1.19的支持,注意一个版本对应一个,不能想当然的说1.20就可以兼容1.19,这是错误的):
![](https://i-blog.csdnimg.cn/blog_migrate/d185474cdb1d1924d78fda875c034cb0.png)
找到对应的tag,点击下载
![](https://i-blog.csdnimg.cn/blog_migrate/d50eb91891f1e26a9d3c29d001ca2a81.png)
下载结束,然后进行相应目录,执行mvn package,jar生成在target目录下
将生成的jar包拷贝到sonarqube的extensions\plugins目录下即可,重启sonarqube,即可看到中文界面:
![](https://i-blog.csdnimg.cn/blog_migrate/9099c42bdf285f6d6eadeef8cc57c0f7.png)
b、安装checkstyle插件(同理,这个直接在sonarqube的market也是无法直接安装的)
到checkstyle官网,下载jar包
https://github.com/checkstyle/sonar-checkstyle/releases
目前我下载的是4.9的版本,可以支持6.7.3,下载这个插件可能需要墙,请注意。将下载的jar包拷贝到sonarqube的extensions\plugins目录下即可,重启sonarqube,。登录后,可以看到安装是否成功:
![](https://i-blog.csdnimg.cn/blog_migrate/bd5349c0b461a9e4d61310a53873417a.png)
(5)、配置maven的settings.xml
打开maven所在目录的conf\settings.xml,添加如下内容:
<settings
> <!-- 这个节默认都有的,只需要添加pluginGroups和profile即可 -->
<pluginGroups
>
<pluginGroup
>
org.sonarsource.scanner.maven
</pluginGroup
>
</pluginGroups
>
<profiles
>
<profile
>
<id
>
sonar
</id
>
<activation
>
<activeByDefault
>
true
</activeByDefault
>
</activation
>
<properties
>
<sonar.host.url
>
http://localhost:9000
</sonar.host.url
>
</properties
>
</profile
>
</profiles
>
</settings
>
进入我们需要进行检查的工程所在目录,输入以下命令:
mvn clean install org.sonarsource.scanner.maven:sonar-maven-plugin:3.3.0.603:sonar
maven执行结束后,便当sonarqube,可以看到如下界面:
![](https://i-blog.csdnimg.cn/blog_migrate/f7e338d03897e0204af41365550adc4f.png)
(6)、配置jenkins的sonarqube(与上面第5项的功能是一致的)
打开jekins,打开构建的项目配置,找到构建这项,如下所示:
![](https://i-blog.csdnimg.cn/blog_migrate/4bad9260e7f27ffb8cf8cbe93e15d853.png)
上面的goals内容为:
clean install org.sonarsource.scanner.maven:sonar-maven-plugin:3.3.0.603:sonar compile
点击构建,成功后,直接登录sonarqube,也可以看到如下所示的图:
![](https://i-blog.csdnimg.cn/blog_migrate/ec50ee1f2ba67d8e29ff211da2bd520e.png)
(7)、配置各个语言的方法如下参考
目前我只对java语言进行了分析,对ts,js,c/c++等没有进行过配置,包括用户权限,目前都没有研究,所以本文只当是一个入门,后面有新的发现,我再来分享。