核心注意点:
SonarQube是一个Java应用,自SonarQube的7.9版本开始放弃支持MySQL数据库,8.3.1版本下只支持内存模式、PostgreSQL、Microsoft SQL Server和Oracle四种存储引擎
1. SonarQube 7.9 需要安装JDK11+
- SonarQube 7.9 开始正式不支持MySQL
- Sonarqube6.7.6版本不匹配mysql5.7版本
- 官方文档要求sonarqube的版本在6.7以上,才可兼容Findbugs插件.
准备工作:
1、jdk
2、sonarqube:http://www.sonarqube.org/downloads/
3、https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/
4、mysql数据库
1 安装sonarqube
下载后解压打开bin目录,启动相应OS目录下的StartSonar.bat(根据自己的机器来选择) 如下图
- 启动浏览器,访问http://localhost:9000,如出现下图则表示安装成功。
2、安装数据库(请参考https://www.jb51.net/article/82399.htm)
3、打开mysql,新建一个数据库 如sonar。
4、打开sonarqube安装目录下的D:\sonar\sonarqube-5.3\sonarqube-5.3\conf\sonar.properties
5、在mysql5.X节点下输入以下信息
sonar.jdbc.url=jdbc:mysql://172.16.30.228:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
sonar.jdbc.username=root
sonar.jdbc.password=root
sonar.sorceEncoding=UTF-8
sonar.login=admin
sonar.password=admin
url是数据库连接地址,username是数据库用户名,jdbc.password是数据库密码,login是sonarqube的登录名,sonar.password是sonarqube的密码
6、重启sonarqube服务,等待两分钟左右 再次访问http://localhost:9000,因为要初始化数据库信息
7、打开D:\sonar\sonar-scanner-2.5\conf\sonar-scanner.properties文件
8、配置如下
sonar.jdbc.url=jdbc:mysql://172.16.30.228:3306/qjfsonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
sonar.jdbc.username=root
sonar.jdbc.password=root
注意:如果测试项目与服务器不在同一台机子,则需要添加服务器的IP:
sonar.host.url=http://XXX.XXX.XXX.XXX:9000
9、配置环境变量
a.新建变量name=SONAR_SCANNER_HOME value=D:\sonar\sonar-scanner-2.5
b.打开path,追加%SONAR_SCANNER_HOME%\bin;
c.命令行执行 sonar-scanner -version,出现以下信息,则表示环境变量设置成功
10、新建配置文件sonar-project.properties
打开要进行代码分析的项目根目录,新建sonar-project.properties文件
示例如下
sonar.projectKey=xgfe
sonar.projectName=xgfe
sonar.projectVersion=1.1
sonar.sources=src
sonar.binaries=target\classes
sonar.language=java
sonar.sourceEncoding=UTF-8
#projectKey是项目的唯一标识,不能出现重复,可随意起
# projectName即项目名称
# projectVersion项目的版本号
# sources为源码目录
# binaries为编译后的classes目录,这个目录要注意一下,如果都在bin下面或者目录还有很多层级才到classe目录,可以直接为sonar.binaries=bin,sonar会自动遍历所有目录
# language为分析的语言
# sourceEncoding源码编码格式
11、启动StartSonar.bat服务,并以管理员的身份启动一个cmd命令窗口,cd命令进入项目的根路径下,执行命令:sonar-scanner,开始对你的代码进行质量审核
12、之后访问http://localhost:9000/, 并进行登录admin/admin,即可查看代码审查结果信息
13、SonarQube支持Gradle、Maven、Ant等多种方式的扫描,我们以Maven为例。
<pluginGroups>
<pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
</pluginGroups>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<sonar.jdbc.url>jdbc:mysql://localhost:3306/sonar</sonar.jdbc.url>
<sonar.jdbc.driver>com.mysql.jdbc.Driver</sonar.jdbc.driver>
<sonar.jdbc.username>root</sonar.jdbc.username>
<sonar.jdbc.password>root</sonar.jdbc.password>
<sonar.host.url>http://localhost:9000</sonar.host.url>
</properties>
</profile>
配置完毕之后需要根据之前说的那样将SonarQube重启。
14、扫描maven工程
上面已经配置好了maven环境变量,然后在需要扫描的项目路径下执行以下maven命令,即可扫描项目代码:
mvn clean compile sonar:sonar
如果云心报错如下 默认版本过高
请在pom.xml中添加如下
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>3.2</version>
</plugin>