亲测有效
环境:springboot+gradle+jdk1.8+sonarqube7.4
一、说明:
SonarQube为静态代码检查工具,采用B/S架构,帮助检查代码缺陷,改善代码质量,提高开发速度,通过插件形式,可以支持Java、C、C++、JavaScripe等等二十几种编程语言的代码质量管理与检测。
通过客户端插件分析源代码,sonar客户端可以采用IDE插件、Sonar-Scanner插件、Ant插件和Maven插件方式等,官网是这么列举的很方便集成:
- Gradle - 用于Gradle的SonarScanner
- MSBuild - 用于MSBuild的SonarScanner
- Maven - 使用SonarScanner for Maven
- Jenkins - Jenkins的SonarScanner
- Azure DevOps - Azure DevOps的SonarQube扩展
- Ant - 用于Ant的SonarScanner
- 其他任何东西(CLI) - SonarScanner
每一种都有自己的分析机制对项目源代码进行分析和扫描,并把分析扫描后的结果上传到sonar的数据库,通过sonar web界面对分析结果进行查看管理
架构图
下载sonarqube包:https://www.sonarqube.org/。现在下载使用的是7.4。下载后是zip格式,linux下和windows下都是这个包,解压即可。
下载sonarqube中文包:地址:https://github.com/SonarQubeCommunity/sonar-l10n-zh/releases,根据对应的版本,下载对应的sonar-l10n-zh-plugin-***.jar包,下载下来后,把jar放到sonarqube-7.4/extensions/plugins目录下,
二、配置
配置文件为/conf/sonar.properties。可以设置使用的数据库和提供的ip和端口。使用postgresql数据库需要注意不能指定模式名称,必须使用默认的default。如果不使用需要按照文档做更多配置来支持。现在配置如下即可
sonar.jdbc.url=jdbc:postgresql://192.169.31.106:5432/sonar
sonar.jdbc.username=postgres
sonar.jdbc.password=123456
sonar.web.host=192.169.31.107
sonar.web.port=9000
数据库可以不进行配置,若不配置则使用自带数据库,不支持数据迁移。Ip为部署机器的ip
三、启动
Windows下:在sonarqube-7.4/bin目录下,根据对应的系统版本,选择对应的文件夹,我的是windows 64位,故选择windows-x86-64目录,打开文件StartSonar.bat ,
Linux下:
1、 创建新用户:adduser sonarUser
2、 改变权限:、chown -R sonarUser:sonarUser /usr/local/sonarqube-7.4/
3、 切换至普通用户下,进入bin/linux64启动下:./sonar.sh console 日志启动模式;./sonar.sh start 后台启动模式;第一次启动可以使用日志模式查看下是否能成功启动,若没有问题,停掉后再切换为后台启动
4、 如果启动出错可以查看下/sonarqube-7.4/temp/conf/es的权限是改变了,如果没有改变则重新执行chown -R sonarUser:sonarUser /usr/local/sonarqube-7.4/对应目录
四、gradle集成:
Build.gradle中配置:
plugins {
id "org.sonarqube" version "2.6.2"
}
buildscript
{
repositories
{
maven
{
url
"https://plugins.gradle.org/m2/"
}
}
dependencies
{
classpath
"org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.6.2"
}
}
apply plugin
:"org.sonarqube"
在build.gradle平级目录新建gradle.properties配置文件。内容为systemProp.sonar.host.url=http://172.16.31.107:9000。次配置是为了将扫描代码结果传送给sonar服务。
在gradle命令行输入:gradle sonarqube即可进行扫描。
五、打开浏览器输入192.169.31.107:9000访问扫描结果。