一、前言
随着项目团队规模日益壮大,项目代码量也越来越多。且不说团队成员编码水平层次不齐,即便是老手,也难免因为代码量的增加和任务的繁重而忽略代码的质量,最终的问题便是bug的增多和代码债务的堆积。因此,代码review便日益提上了日程。当然人工review的效率还是相当低下的,于是我们采用了自动化代码review的工具,便是今天的主角:SonarQube。
二、SonarQube简介
SonarQube® 是一种自动代码审查工具,用于检测代码中的错误,漏洞和多余的代码。它可以与您现有的工作流程集成,以便在项目分支和拉取请求之间进行连续的代码检查。比如:
- SonarQube集成gitlab,在分支推送的时候自动进行代码检查分析,生成代码报告。
- SonarQube集成jenkins,在代码构建的时候自动进行代码分析,生成代码报告。
总之,SonarQube是可以配合一切好用的CI/CD工具进行自动化分析代码并生成代码报告,通过报告我们可以看到代码中可能存在的bug和代码债务。
官方网站:https://www.sonarqube.org/
SonarQube 支持的数据库有:PostgreSQL,Microsoft SQL Server,Oracle,注意7.9版本已经不对MySql进行官方的支持了,如果执意要用Mysql可能会遇到很多坑。当然有的朋友想用Mysql数据库,那么可以选择安装7.7以下版本(包括7.7)。
SonarQube 运行需要ES(ElasticSearch),当然这个不用我们安装,下载的安装包已经包含了ES。
因为我用到了Mysql数据库,综合软硬件说明我选择了7.7版本的SonarQube进行下载安装。
本文下载的版本是Sonarqube-7.7
下载地址:https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.7.zip(187.71MB)
SonarQube 的安装包是不分平台的,默认把所有平台的运行命令都下载下来,使用者根据不同环境运行不同的运行脚本。
2、解压SonarQube安装包
[root@Zabbix ~]# unzip sonarqube-7.7.zip
[root@Zabbix ~]# mv sonarqube-7.7 /usr/local/sonarqube
- bin目录存放了各个环境的启动脚本
- conf目录存放着sonarqube的配置文件
- logs目录存放着启动和运行时的日志文件
3、配置SonarQube
# 我们首先需要通过配置文件修改sonarqube的Mysql连接字符串等信息,打开conf目录的sonar.properties
[root@Zabbix ~]# vim /usr/local/sonarqube/conf/sonar.properties
sonarqube web 默认端口号为9000如果想修改成其他端口可以通过下面这个设置修改其他端口号。
sonar.jdbc.url=jdbc:mysql://172.168.1.14:3306/sonarqube?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&maxAllowedPacket = 16777216&useSSL=false
sonar.jdbc.username=sonarqube
sonar.jdbc.password=123456
wrapper.conf这个配置文件里配置了java命令地址,sonarqube 的日志文件目录等
注:Mysql版本需大于或等于5.6且小于8.0
4、创建数据库及授权
mysql> create database sonarqube;
mysql> grant all on sonarqube.* to sonarqube@'%' identified by '123456';
mysql> flush privileges;
5、启动SonarQube
启动需要授权给一个非root的用户,sonarqube及其es等软件禁止root账户启动,因此需要切换一个非root账户,授权的用户需要有bin目录及其子目录的读取和可执行的权限。
然后我们找到对应平台的脚本,我的系统是64位的linux,进入linux-x86-64目录
# 授权
[root@Zabbix ~]# chown -R admin.admin /usr/local/sonarqube
# 启动
[root@Zabbix ~]# su - admin
[admin@Zabbix ~]$ /usr/local/sonarqube/bin/linux-x86-64/sonar.sh start
# 查询端口
[admin@Zabbix ~]$ netstat -lntup
# 启动之后,我们浏览器访问对应服务器IP地址的9000端口(防火墙要提前放行9000端口)
如果没有成功,那么就在logs目录查看启动日志。一般有几种:
1)es.log # ES或Mysql等数据库连接报错,一般是Mysql的连接字符串账号密码错误或者sonar账号权限不够;
2)es.log # 数据库初始化失败MySQL sonar账户权限不足
3)sonar.log # sonar服务的启动日志
4)web.log # sonarqube web的启动日志
6、访问SonarQube
# 默认账号密码admin
# 登录后界面
7、中文汉化
# 如果看不惯英文界面,那么就先装个中文插件吧。
注:这个中文插件我是没安装成功,我们可通过访问插件地址下载对应版本(版本不兼容会启动失败)
Github地址:https://github.com/SonarQubeCommunity/sonar-l10n-zh/releases
# 找到对应版本
下载地址:https://github.com/SonarQubeCommunity/sonar-l10n-zh/releases/download/sonar-l10n-zh-plugin-1.27/sonar-l10n-zh-plugin-1.27.jar
把下载好的插件上传到plugins目录下,我这里的地址是/usr/local/sonarqube/extensions/plugins
8、重启SonarQube
[admin@Zabbix plugins]$ /usr/local/sonarqube/bin/linux-x86-64/sonar.sh restart
9、访问SonarQube
到此为止,SonarQube的安装与配置便告一段落了,如果有任何问题欢迎留言区讨论。
若文章图片、下载链接等信息出错,请在评论区留言反馈,博主将第一时间更新!如本文“对您有用”,欢迎随意打赏,谢谢!
评论