Sonar本地环境搭建(Windows版)
一、环境准备(本文所使用环境)
- jdk1.8.0_161
- mysql-5.7.23
- sonarqube-7.8 (mysql数据库版本要求是 >=5.6 && <8.0 )
- sonar-scanner-4.2.0.1873
- node-v12.18.2(分析css和js文件时需要,如没有此需求可以不安装)
百度网盘:https://pan.baidu.com/s/1c8T4RaCCVYP6VZ5Cx251MA
提取码:91i6
二、安装及配置
-
jdk安装,省略。
-
mysql安装,省略。
因为sonar第一次启动需要连接数据库,并初始化一些表和数据,本文以mysql为例,创建数据库和用户:
第一步:使用命令创建数据库,名字为sonar:
CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
第二步:创建一个sonar用户并把这个用户的密码设置为soanr:
CREATE USER ‘sonar’ IDENTIFIED BY ‘sonar’;
第三步:将第二步中创建的sonar数据库的所有权限赋给第三步中创建的sonar用户:
GRANT ALL ON sonar.* TO ‘sonar’@’%’ IDENTIFIED BY ‘sonar’;
GRANT ALL ON sonar.* TO ‘sonar’@’localhost’ IDENTIFIED BY ‘sonar’;
FLUSH PRIVILEGES;
-
sonarqube安装。
3.1、解压sonar的安装包sonarqube-7.8.zip到指定目录:
3.2、切换到conf目录下,对sonar.properties文件进行配置:
3.3、切换到sonarqube-7.8\bin\windows-x86-64目录下运行启动命令
第一次启动,sonar需要向mysql库中新建表,和初始化数据,会比较慢,需要耐心等待。等待过程中,可以连接mysql数据库查看表是否被创建,或者表中是否有数据等等。启动成功后,如下图:
若碰到等待很久也没反应的情况,可以打开logs目录下,看看log文件中有没有报错,根据报错,来解决问题:
初始化遇到过的问题:
启动成功后,浏览器访问http://localhost:9000,打开界面。
(此图装过中文插件,且分析过一个项目)
默认使用 用户名:admin 密码:admin 可以登录管理员账号。
3.4、安装中文插件。
- sonar的市场安装:登录admin账号,在市场中搜索Chinese,就会搜到插件,点击Install进行安装:
-
因为网络原因,有时Install不上,也可以直接下载插件,进行安装。下载好插件sonar-l10n-zh-plugin-1.16.jar,下载地址:
https://github.com/SonarQubeCommunity/sonar-l10n-zh/releases/tag/sonar-l10n-zh-plugin-1.16
移动到sonarqube-7.8\extensions\plugins中,再重启sonar即可生效:
停止sonar,打开任务管理器,将java进程结束即可:
-
sonar-scanner安装
4.1、解压sonar-scanner-cli-4.2.0.1873-windows.zip到指定目录:
4.2、切换到conf目录下,对sonar-scanner.properties进行配置:
#----- Default SonarQube server
sonar.host.url=http://127.0.0.1:9000
#----- Default source code encoding
#sonar.sourceEncoding=UTF-8
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
useConfigs=maxPerformance
sonar.sourceEncoding=UTF-8
sonar.login=admin
sonar.password=admin
4.3、环境变量配置
打开cmd,执行:sonar-scanner -v 。如下图代表配置成功:
- nodejs安装,省略。
三、使用sonar-scanner分析项目
- 在待分析项目的根目录下,新建配置文件sonar-project.properties:
# 项目key
sonar.projectKey=Sonartest
# 项目名字
sonar.projectName=Sonartest
# 项目版本
sonar.projectVersion=1.0
# 要分析的源码的目录 多个目录用英文逗号隔开
sonar.sources=src
# 新版的需要加上binaries这个属性,否则无法解析,我这里是Java项目,所以部署后有对应的classes文件夹
sonar.java.binaries=WebRoot/WEB-INF/classes
# 语言
sonar.language=java
# 编码
sonar.sourceEncoding=UTF-8
- 打开cmd,切换至项目根目录下,执行sonar-scanner,随后会开始进行分析:
分析成功后,登录http://localhost:9000,可以看到分析结果:
Sonar本地搭建踩坑记录
问题1
问题描述:第一次启动sonar时,初始化数据库报错。数据库使用mysql
原因:sonar7.8对mysql的版本支持是:>=5.6&&<8.0
解决:本地mysql版本换成了5.7
问题2
问题描述:sonar-scanner进行分析css文件时报node -v 的错误。
原因:本地没有安装node.js
解决:安装node.js 后重新分析,此错误不再出现
问题3
问题描述:报告上传失败
原因:向MySQL数据库中写数据的时候超过了单次最大数据量
解决:可通过修改MySQL中max_allowed_packet参数进行解决。
在my.ini配置文件中添加
重启mysql服务后,验证:
show VARIABLES like ‘%max_allowed_packet%’;
然后重启sonar,在重新执行sonar-scanner进行分析
问题4
问题描述:SVN相关报错
原因:sonar-scanner进行分析时,默认远程连接SVN。上图报错没有连接成功SVN。
解决:因为目前只是本地扫描,因此禁用SVN连接
- 在项目根目录下的配置文件中sonar-project.properties配置以下配置,禁用SVN连接:
2.或在sonarQube中配置:
- 禁用SCM
- 或配置SVN账号密码(暂未尝试)
SonarQube安装中文插件
方式一
sonar的市场安装:登录admin账号,在市场中搜索Chinese,就会搜到插件,点击Install进行安装:
方式二
下载插件jar包。
下载地址:
https://github.com/SonarQubeCommunity/sonar-l10n-zh/releases/tag/sonar-l10n-zh-plugin-1.16
下载后的jar包放在:
重启sonar:
停止sonar,结束java进程
重启后,登录http://localhost:9000后,界面就变成中文:
SonarQube规则的导入导出和启用禁用
一、规则的启用禁用
新增质量配置,来管理规则,即启用和禁用规则
二、规则的导入导出
- 导出:选择备份,后会生成xml文件
- 导入:在质量配置界面,点击恢复,选中xml文件,即可恢复