sonarqube 代码质量分析
目录
- linux下的安装部署
- 版本选择
- 下载安装
- 下载
- 配置
- SonarQube 启动
- SonarQube汉化
- `SonarQube`扫描`maven`项目进行代码质量分析
- maven项目的扫描配置
- 扫描结果分析
- 整合gitlab
linux下的安装部署
SonarQube是一种自动代码审查工具,用于检测代码中的错误,漏洞和多余的代码。它可以与您现有的工作流程集成,以便在项目分支和拉取请求之间进行连续的代码检查。比如:
SonarQube集成gitlab,在分支推送的时候自动进行代码检查分析,生成代码报告。SonarQube集成jenkins,在代码构建的时候自动进行代码分析,生成代码报告。
总之,SonarQube是可以配合一切好用的CI/CD工具进行自动化分析代码并生成代码报告,通过报告我们可以看到代码中可能存在的bug和代码债务。
版本选择
https://docs.sonarqube.org/7.6/project-administration/project-existence/;
左侧有下拉框可以选择sonarqube的各个版本,我们可以选择切换不同的版本以查看不同时期的文档:

我们首先打开 Requirements ,查看当前版本的软硬件支持。

SonarQube 支持的数据库有:PostgreSQL,Microsoft SQL Server,Oracle,注意7.9版本已经不对MySql进行官方的支持了,如果执意要用 Mysql 可能会遇到很多坑(我就被坑的不轻)。当然有的朋友想用Mysql数据库,那么可以选择安装 7.7 以下版本(包括7.7)。
SonarQube 运行需要ES(ElasticSearch),当然这个不用我们安装,下载的安装包已经包含了ES。
因为我用到了Mysql数据库,综合软硬件说明我选择了7.6版本的SonarQube进行下载安装。
下载安装
下载
官网下载:选择想要的版本
https://www.sonarqube.org/downloads/

SonarQube 的安装包是不分平台的,默认把所有平台的运行命令都下载下来,使用者根据不同环境运行不同的运行脚本。
下载完成后,我们把安装包 sonarqube-7.6.zip 放在linux服务器的安装目录(喜欢的任意位置),然后用解压命令解压
unzip sonarqube-7.6.zip
进入文件夹,我们了解几个重要的目录

bin目录存放了各个环境的启动脚本conf目录存放着sonarqube的配置文件logs目录存放着启动和运行时的日志文件
配置
关于jdk的安装这里就不多说了,我们直接进入sonarqube 的配置。
我们首先需要通过配置文件修改 sonarqube 的 mysql 连接字符串等信息,打开 conf 目录的 sonar.properties
我们只需要修改mysql部分就ok了,其他不用过多设置:
sonar.jdbc.url=jdbc:mysql://ip:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.jdbc.username=root
sonar.jdbc.password=123456
sonar.web.port=9000
创建了一个数据库叫 sonar
sonarqube web 默认端口号为 9000
SonarQube 启动
打开 sonarqube 的下载目录的bin目录,里面列举了各个平台的启动脚本

sonarqube及其es等软件禁止 root账户启动,因此需要切换一个非root账户,授权的用户需要有bin目录及其子目录的读取和可执行的权限。
1.创建用户sonar:useradd sonar
2.创建组sonargroup:groupadd sonargroup
3.将用户添加到组:usermod -a -G sonargroup sonar
4.将sonarqube-7.6目录下的所有文件与子目录的拥有者皆设为sonar,群体的使用者sonargroup :chown -R sonar:sonargroup sonarqube-7.6
然后我们找到对应平台的脚本,我的系统是64位的linux,进入 linux-x86-64 目录

启动sonar,执行 sonar.sh 脚本,并添加 start 参数
./sonar.sh start
其他参数:status 可以用来查看是否启动成功

启动之后,我们浏览器访问对应服务器ip地址的9000端口(防火墙要提前放行9000端口)
如果没有成功,那么就在logs目录查看启动日志。一般有几种:
- es.log es或mysql等数据库连接报错,一般是mysql的连接字符串账号密码错误或者sonar账号权限不够;
- es.log 数据库初始化失败 MySQL sonar 账户权限不足
- sonar.log sonar服务的启动日志
- web.log sonarqube web的启动日志
如果一切顺利的话,就会进入登陆页面,账号密码都是 admin。

SonarQube汉化
关于插件我本身使用不多,如果看不惯英文界面,那么就先装个中文插件吧。
在顶部的菜单栏,配置里面,按下图步骤,在下面插件搜索栏输入chinese,即可搜到中文插件,然后点安装。
等待安装完毕,提示重启sonar后,便自动切换到了中文界面。

但是,如果这种方式不好使的话。
可以到https://github.com/SonarQubeCommunity/sonar-l10n-zh/releases下载汉化包:

把下载好的汉化包放到:/usr/local/sonar/sonarqube-7.6/extensions/plugins 目录下,重启就行了。
SonarQube扫描maven项目进行代码质量分析
从官网可以看到,SonarQube支持以下方式来进行项目的扫描;
https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/
1、直接使用SonarQube scanner即扫描仪来进行分析
2、使用SonarQube扫描仪分析Maven
3、使用SonarQube扫描仪分析Gradle
4、使用SonarQube扫描仪分析ant
5、使用SonarQube扫描仪分析Jenkins
6、使用SonarQube扫描仪分析MSBuild(比较少见)
7、使用SonarQube扫描仪分析VSTS-TFS(比较少见)
maven项目的扫描配置
settings文件:
org.sonarsource.scanner.maven
sonar true http://ip:9000

在项目根目录下执行:mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.2:sonar --settings G:\.m2\settings-sxw.xml
出现:Unable to execute SonarQube: Fail to download libraries from server,sonar-maven-plugin版本可能过低,例如,sonarqube-8.4.2.36762,需要sonar-maven-plugin:3.7.0.1746
注意这里我的settings文件是改过了名字的,所以才要重新指定。
BUILD SUCCESS成功之后。
回到web界面:


项目分析完后(项目大会很久很久的。。)

扫描结果分析
https://www.jianshu.com/p/304b0ebdc9a3
整合gitlab
https://blog.csdn.net/weixin_30375785/article/details/90515987
https://blog.csdn.net/zyc88888/article/details/79428119
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
