手把手教你配置sonarqube
前言
作为一个低端码农,从不知道啥代码质量管理,本着学习不会吃亏的态度,搞一下sonarqube,讲实话,真的没有想到会要这么久,早知道这么久…说不定我就…也不会放弃。手动滑稽~
我看网上也有一部分人在使用,但是没有特别全的教程。各种坑…记录一下成长历程。
一、简介:
SonarQube 是一款用于代码质量管理的开源工具,它主要用于管理源代码的质量。 通过插件形式,可以支持众多计算机语言,比如 java, C#, go,C/C++, PL/SQL, Cobol, JavaScrip, Groovy 等。sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具来检测你的代码,帮助你发现代码的漏洞,Bug,异味等信息。
Sonar 不仅提供了对 IDE 的支持,可以在 Eclipse和 IntelliJ IDEA 这些工具里联机查看结果;同时 Sonar 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar。
总结:主要用来帮我们检测代码中的bug。
二、基本配置环境
1. SonarQube
经过多次尝试后选择版本sonarqube-7.6
,如果非要说原因,两个:
- 这是最后一个支持mysql的版本
- 我可以找到支持pdf导出的插件
顺便说一句,SonarQube服务是在centos8环境下搭建的。(可以简单理解为服务端)
sonarqube-7.6网盘下载地址
提取码:uihs
2. JDK
sonarqube-7.6
要求jdk最低版本1.8,后期jdk路径需要手动配置,具体情况后文详述。
3. 数据库mysql
根据上图可以看出要求数据库mysql5.6-8.0
,当然其他数据库也可以,比如postgresql
,但是小弟不会~~
上面文件在解压后的conf/sonar.properties
文件中。
mysql网盘下载地址
提取码:oovy
4. sonar-scanner
可以简单理解为soanrqube的客户端,用来执行请求的。本文使用sonar-scanner-3.3.0.1492-windows
,对在windows环境搭建scanner服务。
sonar-scanner-3.3.0.1492-windows网盘下载地址
提取码:34mu
5. sonar-pdf-plugin
这个是比较关键的一步,扫描完代码以后,肯定是想要导出结果,分享给团队,所以需要这个插件,本文使用的是:sonar-pdfreport-plugin-3.0.3.jar
sonar-pdf-plugin网盘下载地址
提取码:5g5f
二、安装过程:
1. 查看当前系统版本
输入命令:lsb_release -a
得到信息如下:
即:linux64位系统,centos8.3.2011
2. 安装sonarqube
解压文件,命令:unzip sonarqube-8.8.0.42792.zip
,即解压该文件至当前文件夹。
3. 配置sonarqube
配置sonarqube中的java版本:
cd /home/sonarqube/sonarqube-8.8.0.42792/conf/ && vim wrapper.conf
图中路径为jdk安装目录
4. 配置elasticsearch中的java
执行以下命令来编辑启动文件:
cd /home/sonarqube/sonarqube-8.8.0.42792/elasticsearch/bin && vim elasticsearch
防止混乱,贴出部分截图:
5. 新增用户
由于elasticsearch默认不能使用root启动,所以需要新增一个有权限的用户,重点在于:新增用户并且有权限。
具体操作如下截图(图中版本请自动转换):
截止目前,配置基本完成。
5. 启动sonarqube
输入命令,启动sonarqube
cd /home/sonarqube/sonarqube-8.8.0.42792/bin && ./linux-x86-64/sonar.sh start
查看日志:
tail -f ../logs/sonar.log
如图所示,启动成功:
6. 登录
访问地址:http://IP:9000
,默认账户:admin,密码:admin
7. 下载中文包
登录成功以后,如图(本文)所示操作,成功后重启即可:
三、sonar-scanner
1. 配置sonar-scanner
将下载后的压缩包放在自己本地(windows环境),解压后如下所示:
进入文件夹内的conf目录,发现有一个sonar-scanner.properties
文件,如果没有就复制以下内容进去:
#Configure here general information about the environment, such as SonarQube server connection details for example
#No information about specific project should appear here
#----- Default SonarQube server(配置你刚才的服务IP)
sonar.host.url=http://192.168.200.245:9000
#----- Default source code encoding
#sonar.sourceEncoding=UTF-8
配置sonar-scanner环境变量,新增变量SONAR_RUNNER_HOME
在PATH
路径上新增配置如下:
测试soanr-scanner环境变量是否配置成功:
打开cmd窗口,输入:sonar-scanner -v
展示如下,则配置成功:
2. 配置要扫描的项目
sonar扫描项目一定要在有pom的文件层级,
新建一个sonar-scanner.properties在该目录,具体内容如下:
# Token
sonar.login=admin
sonar.password=admin
# must be unique in a given SonarQube instance
sonar.projectKey=study
# this is the name displayed in the SonarQube UI
sonar.projectName=study
sonar.projectVersion=3.0
# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# Since SonarQube 4.2, this property is optional if sonar.modules is set.
# If not set, SonarQube starts looking for source code from the directory containing
# the sonar-project.properties file.
sonar.sources=src
sonar.java.binaries=target/classes
# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8
四、上传pdf插件
将下载好的sonar-pdfreport-plugin-3.0.3.jar
包上传到sonar安装目录下的/extensions/plugins
文件夹下:
查看文件夹内容:
重启sonar服务:
./home/sonarqube/sonarqube-7.6/bin/linux-x86-64/sonar.sh restart
五、扫描项目并导出PDF
1. 扫描项目
在自己本机,打开cmd窗口,切换到要扫描项目的目录下,执行:
sonar-scanner -X
登录服务可以查看扫描结果:
2. 导出PDF
选择刚才扫描过项目:
此时,即可。
六、亲自踩过的坑
1. JDK版本下载错误:
2. sonarqube的JDK未配置:
3. 未新增用户,elasticsearch报错:
4. 导出PDF报错
解决方案:
删除原有扫描结果,重新扫描,如果还是不行,直接删除项目,再次扫描即可。