# 1. 环境

  • jdk
  • sonarqube7.8
  • sonar-scanner4.5.0

去官方地址 https://www.sonarqube.org/downloads/ 下载对应的 sonarqube 版本,本文用的版本 SonarQube 7.8

yum install java
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.8.zip
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.5.0.2216-linux.zip
1
2
3

image-20201210091324697

# 2. 解压设置环境变量

我的在usr/local下,uzip解压 mv等操作略过 .

打开之后在末尾添加,以下只是参考,只要放到环境变量就行

vim /etc/profile
source /etc/profile
1
2
export SONAR=/usr/local/src/sonar-scanner-4.5.0.2216-linux
export PATH=${SONAR}/bin:$PATH
1
2

# 3. mysql数据源配置

/usr/local/src/sonarqube-7.8/conf/sonar.properties
1
sonar.jdbc.url=jdbc:mysql://122.152.211.101:12306/sonarqube?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.jdbc.username=dbuser
sonar.jdbc.password=Lg5201314
sonar.jdbc.driverClassName=com.mysql.jdbc.Driver
1
2
3
4

# 4. 启动sonarqube

/usr/local/src/sonarqube-7.8/bin/linux-x86-64/sonar.sh start
1

我这里已经启动了。

直接在浏览器访问 http://106.12.203.184:9002/ 即可看到页面,我这边设置了9002端口。默认账号密码admin/admin

图片描述

# 5. 更好的启动sonarqube

vim /etc/systemd/system/sonar.service

[Unit]
Description=SonarQube service
After=syslog.target network.target
[Service]
Type=forking

## 可以具体路径再改下
ExecStart=/usr/local/src/sonarqube-7.8/bin/linux-x86-64/sonar.sh start
ExecStop=/usr/local/src/sonarqube-7.8/bin/linux-x86-64/sonar.sh stop
User=sonaruser
Group=Ligan12.
Restart=always
[Install]
WantedBy=multi-user.target
1
2
3
4
5
6
7
8
9
10
11
12
13
14

sonarqube支持以下命令

console | start | stop | force-stop | restart | status | dump

可以通过以下语句控制

systemctl daemon-reload

systemctl start sonar.service
systemctl stop sonar.service
systemctl status sonar.service
1
2
3

# 6. 如果有报错: Process exited with exit value [es]: *

可以追踪sonarqube下的log文件,我这里经过定位是启动es的时候用root启动了 需要 adduser sonaruserpasswd sonaruser;然后 chown -R sonaruser:sonaruser/sonar_path 即可 然后启动用 sonaruser 启动即可成功。

# 7. 如果有报错: Java heap space

官方文档即可 (opens new window)

export SONAR_SCANNER_OPTS="-Xmx1028m"
set SONAR_SCANNER_OPTS=-Xmx512m
1
2

# 8. 如果有报错: WrapperSimpleApp: Encountered an error running main:xx

2020.12.14 09:49:24 WARN  app[][o.s.application.App] SonarQube will require Java 11+ starting on next version
2020.12.14 09:49:24 INFO  app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /usr/local/src/sonarqube-7.8/temp

WrapperSimpleApp: Encountered an error running main: java.nio.file.AccessDeniedException: /usr/local/src/sonarqube-7.8/temp/conf/es/elasticsearch.yml
java.nio.file.AccessDeniedException: /usr/local/src/sonarqube-7.8/temp/conf/es/elasticsearch.yml
1
2
3
4
5

删除 /usr/local/src/sonarqube-7.8/temp 这个目录就好,如果还是有问题,看下 web.log 日志文件。

# 9. 引入具体项目

需要在你的检测目录下建立一个配置文件即可,sonar-project.properties内容参考如下:

# Sonar项目标识,在 SonarQube实例下必须唯一
sonar.projectKey=rxst2

# 在 SonarQube UI 中显示的项目名称
sonar.projectName=rxst2

# 项目版本
sonar.projectVersion=1.0.9
 
# 项目代码与 sonar-project.properties 文件的相对路径
sonar.sources=.
 
# 代码文件的编码
sonar.sourceEncoding=UTF-8

# 排除不参与代码分析的文件或目录
sonar.exclusions=.idea/**/*
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# 10. 执行scanner

sonar-scanner   -Dsonar.projectKey=rxst2   -Dsonar.sources=.   -Dsonar.host.url=http://106.12.203.184:9002   -Dsonar.login=aabbc6f472f7bbf8485882cfb246ca04e8b37fac
1

大概等一段时间,就可以在web UI 页面查看到结果集了。

WeChat34d28dc0079b1eef0f9452879d601b17

##参考资料