SonarQube的安装与使用
Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,帮助我们从源码中找出潜在的bug,未使用的代码,复杂的表达式,未覆盖的代码,糟糕的代码,重复的代码等等
通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十几种编程语言的代码质量管理与检测
更多介绍请看官方网站SonarQube,官方文档:SONAR Documentation,
SonarQube安装
推荐使用docker
安装,官方docker
地址:SonarQube, 简单的运行一个SonarQube
服务:
1 | docker run -d --name sonarqube -p 9000:9000 -p 9092:9092 sonarqube |
打开http://localhost:9000/
,默认帐号和密码都为admin
数据库配置
默认情况使用的一个内嵌的H2
数据库,肯定不适合生产情境,数据库配置的三个变量
SONARQUBE_JDBC_USERNAME
SONARQUBE_JDBC_PASSWORD
SONARQUBE_JDBC_URL
官方示例(需要安装一个postgresql
):1
2
3
4
5
6docker run -d --name sonarqube \
-p 9000:9000 -p 9092:9092 \
-e SONARQUBE_JDBC_USERNAME=sonar \
-e SONARQUBE_JDBC_PASSWORD=sonar \
-e SONARQUBE_JDBC_URL=jdbc:postgresql://localhost/sonar \
sonarqube
由于我已经有一个mysql
容器:1
docker run --name wlcx_mysql -p 3306:3306 -v /srv/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password -d mysql
所以使用链接容器的方式使用数据库,容器名为wlcx_mysql
1 | docker run -d --link wlcx_mysql:wlcx_mysql --name sonarqube \ |
也可以使用docker-compose
的方式,更加的方便,请参考:docker sonarqube recipes
SonarQube使用
使用默认的帐号登录之后,可以:
- 生成一个代替帐号的
token
- 修改一个
admin
的密码 - 可以在
Administration
=>System
=>Update Center
,安装中文插件和其它要分析的语言的插件
拿到了token
后,介绍如何用sonar
分析Maven
与Gradle
项目
Maven项目
1 | mvn clean verify sonar:sonar \ |
运行这个命令即可,为了固定sonar
的mvn插件版本,可以配置:1
2
3
4
5
6
7
8
9
10
11<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>3.3.0.603</version>
</plugin>
</plugins>
</pluginManagement>
</build>
更多详细配置:Analyzing with SonarQube Scanner for Maven
Gradle项目
配置插件:1
2
3
4
5
6
7
8
9
10
11
12buildscript {
repositories {
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.5"
}
}
apply plugin: "org.sonarqube"
对于Gradle 2.1+
,可以这样配置:1
2
3plugins {
id "org.sonarqube" version "2.5"
}
运行命令:1
2
3gradle sonarqube \
-Dsonar.host.url=http://localhost:9000 \
-Dsonar.login=token
或将sonar
地址与token
,配置到项目下的gradle.properties
或~/.gradle/gradle.properties
当中1
2
3systemProp.sonar.host.url=http://localhost:9000
systemProp.sonar.login=token
然后执行gradle sonarqube
即可,更多详细配置请看:Analyzing with SonarQube Scanner for Gradle