SonarQube简介
SonarQube是一款开源的代码质量检查工具,主要用于源代码的质量检查,是devops流水线中很常用的一个工具,以插件化的形式,支持多种编程/脚本语言的代码分析,同时也提供了对常用IDE工具的支持。Sonar环境搭建
Linux下环境搭建
安装包下载地址:https://www.sonarqube.org/downloads/工具分为社区免费版和开发版,官网下载可能比较慢,我已经下载好的版本存放在网盘中,有需要的可以从百度网盘下载即可:
链接:https://pan.baidu.com/s/1vKUlViVPzHCW8Q_14yE4PA
提取码:1234
SonarQube的安装包下载下来是一个zip压缩包,windows和linux下的安装包都是同一个,压缩包中会有针对不同系统的启动脚本:
linux环境搭建:(需提前安装好jdk )
# 先创建一个sonar用户,用来启动sonar,具体可见注意事项第3点
groupadd sonar
useradd sonar -g sonar -p sonar
# 使用unzip命令解压压缩包使用unzip命令解压压缩包
unzip sonarqube-8.4.2.36762.zip -d /home/sonar/devopstools
# 把sonar所需用到的目录都授权给sonar
chown -R sonar:sonar /home/sonar/devopstools/sonarqube-8.4.2.36762
chown -R sonar:sonar jdkpath
# 执行bin目录下的启动脚本
cd /home/sonar/devopstools/sonarqube-8.4.2.36762/bin/linux-x86-64
sh sonar.sh start
注意事项;
1、sonarqube是需要依赖于jdk的,目前我所使用的sonarqube-8.4的版本,需要依赖于java11的版本,否则在启动的时候会报错 :
2、sonarqube安装后,数据默认是存储在H2数据库引擎中的,可以在配置文件中修改数据存储的相关信息,配置文件存放于conf/sonar.properties文件中,目前支持H2(默认使用这个,但是官方推荐仅用于测试 ,商业环境中不推荐使用)、Oracle、PostgreSQL和SQLServer。
在以前的版本中,会看到支持mysql,网上有很多教程都写的是配置mysql的数据源 ,从SonarQube v7.9版本开始,将不再支持mysql,具体可参考下面的官方申明:
https://community.sonarsource.com/t/end-of-life-of-mysql-support/8667
3、sonarqube启动的时候,会默认启动elasticsearch,elasticsearch现在默认不能以root用户启动 ,因为不能用root身份去启动sonar,否则执行sh sonar.sh start命令后,在logs文件中会出现如下的错误信息:
sonar.log:
es.log:
Linux下通过Docker搭建SonarQube环境
# 下载sonarqube的docker镜像:
docker pull sonarqube
docker run -itd --name sonarqube -p 9000:9000 sonarqube
执行以上命令后,即可成功安装sonarqube,然后在浏览器中输入ip+端口9000访问即可。安装后,默认的登录用户名和密码是admin / admin 。登录后初始化页面如下:
Windows下安装SonarQube
直接下载安装包解压后, 进入bin目录下的windows-x86-64文件夹中,然后执行bat脚本启动就行。(需提前安装好jdk并配置环境变量,新版本需依赖jdk11)Sonarqube安装目录介绍
sonar安装目录常用的几个目录介绍:bin:下面存放了windows、linux和mac电脑的启动脚本
conf:里面存放的是配置文件,其中sonar.properties里面可以更改sonar的数据源配置,端口等重要信息,wrapper.conf里面可以指定java的路径和一些其他的参数
extensions:这个里面常关注的是plugins文件夹里面的内容,可以从官网下载其他插件放进去,扩展sonar的功能
SonarQube基本操作
1、生成token2、找一个java的maven工程,在pom所在目录直接执行下面的命令扫描:
mvn sonar:sonar
-Dsonar.projectKey=demo
-Dsonar.host.url=http://106.53.29.33:9000
-Dsonar.login=27b9c784671905425be75c580f5ed818c9533bc5
不同的语言,使用方法不一样,可以通过下图去筛选不通的语言,得到扫描的命令:
3、查看扫描结果
可以看到扫描出来的bug以及各种语言的代码行数,圈复杂度,代码重复率等指标的数据。
总结
1、以上已为大家介绍了SonarQube环境搭建,要注意 ,新的版本需要依赖jdk11,以后的版本可能依赖的会更高 ,遇到启动报错,要学会查看日志进行分析,linux下安装的时候,不能用root用户去安装,不然会报elasticsearch启动错误。
2、SonarQube主要用来展示各个项目的扫描结果和数据,目前搭建的是sonar的服务端, 如果是扫描其他语言,可能需要下载安装sonar-scanner的插件,可以结合jenkins实现持续集成,能够在开发提交代码后自动触发扫描。
3、更多Sonar的用法请持续关注,后面有时间再分享其他用法,随着版本的升级,很多的用法也需要及时去学习和更新 ,最好的办法就是参考官网的文档学习,可以少踩很多坑。
往期精彩回顾
Postman+Newman+Git+Jenkins实现接口自动化测试持续集成
Fiddler Everywhere v1.0.1版本基础功能介绍