一直想使用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
https://www.sonarqube.org/downloads/
下载6.7.3并解压,各个目录的含义如下:
进行目录 :sonarqube-6.7.3\bin\windows-x86-64
运行:startsonar.bat,结果如下:
在本机流程器中输入如下内容:
至此,证明sonarqube能够正式运行了。默认管理员的用户与密码为:admin/admin
(3)、在上图中,按ctrl+c,停止sonarqube,修改mysql为数据库
打开sonarqube-6.7.3\conf\sonar.properties文件,修改如下:
进入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后,会有个设置,如下所示。
(4)、安装插件 (下载两个附件,直接将文件拷贝到extensions\plugin目录,可略过本节,重启sonarqube即可)
a.安装chinese插件
目前来看,直接从官方网站下载好像是不行的。
如下所示:
到chinese的网站:
https://github.com/SonarQubeCommunity/sonar-l10n-zh
查看兼容性问题,如下表所示(6.7的需要1.19的支持,注意一个版本对应一个,不能想当然的说1.20就可以兼容1.19,这是错误的):
找到对应的tag,点击下载
下载结束,然后进行相应目录,执行mvn package,jar生成在target目录下
将生成的jar包拷贝到sonarqube的extensions\plugins目录下即可,重启sonarqube,即可看到中文界面:
b、安装checkstyle插件(同理,这个直接在sonarqube的market也是无法直接安装的)
到checkstyle官网,下载jar包
https://github.com/checkstyle/sonar-checkstyle/releases
目前我下载的是4.9的版本,可以支持6.7.3,下载这个插件可能需要墙,请注意。将下载的jar包拷贝到sonarqube的extensions\plugins目录下即可,重启sonarqube,。登录后,可以看到安装是否成功:
(5)、配置maven的settings.xml
打开maven所在目录的conf\settings.xml,添加如下内容:
<settings
>
<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,可以看到如下界面:
(6)、配置jenkins的sonarqube(与上面第5项的功能是一致的)
打开jekins,打开构建的项目配置,找到构建这项,如下所示:
上面的goals内容为:
clean install org.sonarsource.scanner.maven:sonar-maven-plugin:3.3.0.603:sonar compile
点击构建,成功后,直接登录sonarqube,也可以看到如下所示的图:
(7)、配置各个语言的方法如下参考
https://docs.sonarqube.org/display/PLUG/SonarTSQL
目前我只对java语言进行了分析,对ts,js,c/c++等没有进行过配置,包括用户权限,目前都没有研究,所以本文只当是一个入门,后面有新的发现,我再来分享。