安装sonar代码质量管理平台
# 安装 sonar 代码质量管理平台
本文演示了 centos 系统安装 sonarqube 服务的步骤。sonarqube 是一个代码质量管理平台,可以通过 sonar 客户端分析本地的工程代码, 将分析结果推送到服务端(即 sonarqube 平台), 然后在管理平台就可以看到工程的代码漏洞、待优化的点、测试代码覆盖率等。通过 sonarqube,可以确保我们产出高质量的代码。
提示
若您想采用 docker 安装请前往创建 sonarqube docker 服务。
# 一、 约定
CentOS-7-x86_64-Minimal-1503-01 sonar IP:10.96.15.244
# 二、 准备资源
名称 | 服务器路径 | 获取地址 |
---|---|---|
jdk | /root/jdk-8u77-linux-x64.rpm | |
sonarqube | /root/sonarqube-6.5.zip | https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-6.5.zip |
# 三、 安装
# 1. 安装 jdk
rpm -ivh /root/jdk-8u77-linux-x64.rpm
# 2. 安装数据库
//mysql server 要求必须 5.6 以上
vi /etc/yum.repos.d/MariaDB.repo
# MariaDB 10.2 CentOS repository list - created 2017-08-11 02:00 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
yum install MariaDB-server MariaDB-client -y
systemctl start mariadb
mysql -uroot -p -e "create database sonar; grant all on . to root@'localhost' IDENTIFIED by '123456';"
# 3. 安装 sonar
yum install unzip -y
unzip /root/sonarqube-6.5.zip -d /root
sed -i "s/#sonar.web.port=9000/sonar.web.port=80/g" /root/sonarqube-6.5/conf/sonar.properties
sed -i "s/#sonar.jdbc.username=/sonar.jdbc.username=root/g" /root/sonarqube-6.5/conf/sonar.properties
sed -i "s/#sonar.jdbc.password=/sonar.jdbc.password=123456/g" /root/sonarqube-6.5/conf/sonar.properties
sed -i "s/#sonar.jdbc.url=jdbc:mysql/sonar.jdbc.url=jdbc:mysql/g" /root/sonarqube-6.5/conf/sonar.properties
# 4. 配置防火墙
firewall-cmd --add-port 80/tcp --permanent
firewall-cmd --reload
# 四、 运行服务
有 3 种方式
# 1. 原始方式
/root/sonarqube-6.5/bin/linux-x86-64/sonar.sh start
# 2. 通过 init.d
vi /etc/init.d/sonar
#!/bin/sh
#
# rc file for SonarQube
#
# chkconfig: 345 96 10
# description: SonarQube system (www.sonarsource.org)
#
### BEGIN INIT INFO
# Provides: sonar
# Required-Start: $network
# Required-Stop: $network
# Default-Start: 3 4 5
# Default-Stop: 0 1 2 6
# Short-Description: SonarQube system (www.sonarsource.org)
# Description: SonarQube system (www.sonarsource.org)
### END INIT INFO
/usr/bin/sonar $*
ln -s /root/sonarqube-6.5/bin/linux-x86-64/sonar.sh /usr/bin/sonar
chmod +x /etc/init.d/sonar
chkconfig --add sonar
service sonar start
# 3. 通过 systemd
vi /etc/systemd/system/sonar.service
[Unit]
Description=sonar service
After=network.target
[Service]
Type=forking
ExecStart=/root/sonarqube-6.5/bin/linux-x86-64/sonar.sh start
ExecStop=/root/sonarqube-6.5/bin/linux-x86-64/sonar.sh stop
User=root
Restart=on-abort
[Install]
WantedBy=multi-user.target
systemctl enable sonar
systemctl start sonar
# 五、 查看日志
tail -f /root/sonarqube-6.5/logs/*
# 六、 验证
# 1. 访问http://10.96.15.244
# 2. 登录
账号:admin
密码:admin
# 3. 推送工程分析报告到服务端(通过命令行工具)
提示
约定: 工程根目录: F:\workspace\github\gradleProjects\springboot-mybatisDemo(为多模块类型的工程)
# 1)下载 sonar-scanner
下载 sonar-scanner 到 D:\sonar-scanner-3.0.3.778-windows
# 2) 配置 sonar-scanner
1> 编辑 D:\sonar-scanner-3.0.3.778-windows\conf\sonar-scanner.properties
sonar.host.url=http://10.96.15.244
IP 改为实际的 IP
2> 工程根目录下创建 sonar scanner 配置文件
创建 F:\workspace\github\gradleProjects\springboot-mybatisDemo\sonar-project.properties:
# Encoding of the source files
sonar.sourceEncoding=UTF-8
# sonarqube中的项目KEY,必须在sonarqube中唯一
sonar.projectKey=sprintboot-mybatisDemo
# sonarqube中显示的项目名称及版本号
sonar.projectName=sprintboot-mybatisDemo
sonar.projectVersion=1.0
sonar.java.binaries=../out
# soanr-project.properties配置相对路径
sonar.sources=./src/main/java
sonar.tests=./src/test/java
sonar.java.coveragePlugin=jacoco
#配置jacoco的分析结果文件的路径
sonar.jacoco.reportPaths=../out/build/springboot-mybatisDemo/jacoco/jacocoTest.exec
# 3) 扫描代码并将报告推送到服务端
项目根目录执行命令 D:\sonar-scanner-3.0.3.778-windows\bin\sonar-scanner.bat
# 4. 推送工程分析报告到服务端(通过 gradle 插件)
# 1) 配置 jacoco 插件
apply plugin: "jacoco"
jacoco {
toolVersion = "0.7.6.201602180812"
reportsDir = file("$buildDir/customJacocoReportDir")
}
jacocoTestReport {
reports {
xml.enabled false
csv.enabled false
html.destination file("${buildDir}/jacocoHtml")
}
}
test {
jacoco {
append = false
destinationFile = file("$buildDir/jacoco/jacocoTest.exec")
}
}
# 2) 配置 sonarqube 插件
plugins {
id "org.sonarqube" version "2.5"
}
sonarqube {
properties {
property "sonar.sourceEncoding", "UTF-8"
}
}
sonarqube {
properties {
property "sonar.sources", "./src/main"
property "sonar.tests", "./src/test"
//sonar.projectName、sonar.projectKey不配置,则会启用默认配置
property "sonar.projectName", "sprintboot-mybatisDemo"
property "sonar.projectKey", "sprintboot-mybatisDemo"
/*无需配置sonar.jacoco.itReportPath,通过测试得知“sonarqube插件会自动检测”
property "sonar.jacoco.itReportPath", "../out/build/sprintboot-mybatisDemo/jacoco/jacocoTest.exec" */
}
}
# 3) 配置 sonar 服务的 IP
创建 F:\workspace\github\gradleProjects\gradle.properties
systemProp.sonar.host.url=http://10.96.15.244
# 4) 扫描代码并将报告推送到服务端
gradle springboot-mybatisDemo:sonarqube
# 5. 服务端查看分析报告
# 6. 客户端从服务端拉取规则
以 idea IDE 的 SonarLint 插件为例。