SonarQube构架
SonarQube(简称Sonar)是管理代码质量的开放平台,它可以快速地对代码质量进行分析,并给出合理的解决方案,提高管理效率,保证代码质量。
SonarQube框架包含以下四个部分:
-
Project
-
SonarQube Scanner
-
SonarQube Server
-
SonarQube Database

Project
是需要被分析的源码,如我们的app工程源码,SonarQube支持多种语言和多种工程结构,Andriod是属于一种多模块的Java工程。
SonarQube Scanner
是用于执行代码分析的工具,在Project的根目录下执行,我们还需要在Project下进行SonarQube配置,其中指定了工程的相关信息,还指定了SonarQube Server的地址,SonarQube Scanner分析完毕之后,会将结果上报到该Server。
注:官方对Scanner的描述是“The SonarQube Scanner is recommended as the default launcher to analyze a project with SonarQube”,个人理解是可以用任何其它的工具替代,只要能对Source进行分析,并生成Server能构解析的数据格式上报给Server。
SonarQube Server
显示分析结果的Web Server,在SonarQube Scanner第一次将一个工程的分析结果上报给SonarQube Server后,Server上会自动创建一个工程显示分析的结果,可以在Server上设置代码质量管理相关的各种配置,如设置代码检查规则(Rule)和质量门限(Quality Gate)等。
SonarQube配置
SonarQube支持多种工程构建方式的配置,也对应需要用不同的Scanner来执行分析过程:
一、安装配置Sonar
1、需要下载的安装包有下面两个
https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-5.6.6.zip #sonar安装包
https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.0.3.778-linux.zip #sonar scanner安装包
2、修改数据库配置
1
2
3
4
5
6
7
|
mysql> CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql> CREATE USER 'sonar' IDENTIFIED BY 'Sonar123!' ;
mysql> GRANT ALL ON sonar.* TO 'sonar' @ '%' IDENTIFIED BY 'Sonar123!' ;
mysql> GRANT ALL ON sonar.* TO 'sonar' @ 'localhost' IDENTIFIED BY 'Sonar123!' ;
mysql> FLUSH PRIVILEGES;
|
3、解压修改配置
1
2
3
4
5
6
7
8
9
10
11
|
修改sonar.properties配置
sonar.jdbc.username=sonar
sonar.jdbc.password=Sonar123!
sonar.jdbc.url=jdbc:mysql: //10 .61.100.32:3306 /sonar ?useUnicode= true &characterEncoding=utf8&rewriteBatchedStatements= true &useConfigs=maxPerformance
sonar.sorceEncoding=UTF-8
sonar.login=admin
sonar.password=admin
|
4、启动sonarqube
1
2
3
|
tcp 0 0 0.0.0.0:9000 0.0.0.0:* LISTEN 2045 /java
|
此时通过浏览器就可以打开sonarqube界面,下面开始通过配置sonar scanner来分析代码并在浏览器显示。
二、安装配置Sonar scanner
1、解压并修改配置
1
2
3
4
5
6
7
8
9
10
11
|
sonar.host.url=http: //10 .61.100.34:9000
sonar.sourceEncoding=UTF-8
sonar.jdbc.username=sonar
sonar.jdbc.password=Sonar123!
sonar.jdbc.url=jdbc:mysql: //10 .61.100.32:3306 /sonar ?useUnicode= true &characterEncoding=utf8
onar.login=admin
sonar.password=admin
|
2、拉取代码做测试用
3、分析测试
1
2
3
4
5
6
7
8
9
10
11
|
INFO: ANALYSIS SUCCESSFUL, you can browse http: //10 .61.100.34:9000 /dashboard/index/my :project
INFO: Note that you will be able to access the updated dashboard once the server has processed the submitted analysis report
INFO: More about the report processing at http: //10 .61.100.34:9000 /api/ce/task ? id =AV0v7l4rYf3zHFnt0hqQ
INFO: ------------------------------------------------------------------------
INFO: EXECUTION SUCCESS
INFO: ------------------------------------------------------------------------
INFO: Total time : 55.900s
INFO: Final Memory: 50M /464M
INFO: ------------------------------------------------------------------------
|
4、此时即可在浏览器中查看代码分析情况

本文转自 亮公子 51CTO博客,原文链接:http://blog.51cto.com/iyull/1946326