0. 准备工作
前提需要安装好JDK8
及MySQL5.6+
。
1. 下载
从官网https://www.sonarqube.org/downloads/
下载sonarqube-6.7.3.zip
压缩包。
2. 解压
上传到服务器后,解压。
[root@localhost sonar]# unzip sonarqube-6.7.3.zip -d /opt
3. 配置MySQL数据库
Sonar 默认使用的是 Derby 数据库,但这个数据库一般用于评估版本或者测试用途。商用及对数据库要求较高时,建议使用其他数据库。
# 打开配置文件
[elsearch@localhost linux-x86-64]$ vi /opt/sonarqube-6.7.3/conf/sonar.properties
# 配置MySQL
sonar.jdbc.username=root
sonar.jdbc.password=*****
sonar.jdbc.url=jdbc:mysql://192.168.10.132:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
3. 启动服务
[root@localhost sonar]# cd /opt/sonarqube-6.7.3/bin/linux-x86-64/
[root@localhost linux-x86-64]# ./sonar.sh start
上面以root
用户启动时,会因can not run elasticsearch as root
报错,而停止服务。
这是出于系统安全考虑设置的条件。由于
ElasticSearch
可以接收用户输入的脚本并且执行,为了系统安全考虑,建议创建一个单独的用户用来运行ElasticSearch
。
解决方法是创建一个单独用户来启动。
# 新建一个用户组:elsearch
groupadd elsearch
# 添加一个用户:elsearch
useradd elsearch -g elsearch -p elasticsearch
# 更改`sonarqube-6.7.3`文件夹及内部文件的所属用户及组为elsearch:elsearch
chown -R elsearch:elsearch /opt/sonarqube-6.7.3/
# 切换用户
su elsearch
# 启动
cd /opt/sonarqube-6.7.3/bin/linux-x86-64
./sonar.sh start
# 查看状态
[elsearch@localhost linux-x86-64]$ ./sonar.sh status
SonarQube is running (3901).
SonarQube
默认端口是9000
,浏览http://192.168.10.172:9000
启动正常。
SonarQube
默认有一个admin
用户,密码默认admin
。
4. 分析代码
- 取得一个
token
SonarQube
只允许其用户分析代码,所以为每个用户生成一个token
用来在客户端运行分析。
Help --> Tutorials --> Analyze a new project --> Genereate a token (or Use existing token)
- 启动分析
Sonar实际上是一个Web系统,展现了静态代码扫描的结果,结果是可以自定义的,而真正实现代码扫描的是Sonar Scanner
这个工具。对于Maven
项目,通过sonar-maven-plugin
插件进行分析。
最直接地,执行以下命令就可以了。
# 在项目根目录下
$ mvn sonar:sonar -Dsonar.host.url=http://192.168.10.172:9000 -Dsonar.login=your token
官网上关于分析的说明如下,主要注意两点:
1. 多模块项目运行sonar
目标前,需要mvn clean install
2. 运行时,可以指定具体sonar-maven-plugin
插件版本,不指定时将使用最新版本。
mvn clean verify sonar:sonar
# In some situation you may want to run sonar:sonar goal as a dedicated step. Be sure to use install as first step for multi-module projects
mvn clean install
mvn sonar:sonar
# Specify the version of sonar-maven-plugin instead of using the latest. See also 'How to Fix Version of Maven Plugin' below.
mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.4.0.905:sonar
- 浏览报告
# 上述命令执行结束后会输出报告地址:
[INFO] ANALYSIS SUCCESSFUL, you can browse http://192.168.10.172:9000/dashboard/index/net.mrliuli:erp
5. Jenkins
集成SonarQube
待续。