kingfeng's Notes

Jenkins + SonarQube 代码质量管理

公司最近使用SonarQube 代码规范统一管理。
虽然在Android Studio 里面安装SonarLinit及 SonarQube Community Plugin 插件简单配置一下就可以实现,这种情况适用于在开发者本地代码质量管理。
但在测试,生产等环境是并不合适,所以我们想着把SonarQube配置到Jenkins上去,方便扫描代码质量后进行自动打包。

准备内容

sonarqube-7.1
sonar-scanner-3.1.0.1141
mysql-8.0.11
Jenkins 2.107.2

质量检查配置步骤

有下面几步:
1.在sonarQube解压目录中\sonarqube-7.1\bin\windows-x86-64\StartSonar.bat 执行。
2.安装mysql;

修改下面的配置文件:
\sonarqube-7.1\conf\sonar.properties 下:

1
2
3
4
5
6
7
8
9
# ip及port配置好本地设置的
sonar.jdbc.url=jdbc:mysql://localhost:3307/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
#mysql的账号,密码
sonar.jdbc.username=root
sonar.jdbc.password=123456
sonar.sorceEncoding=UTF-8
# sonarQube登录账号密码
sonar.login=admin
sonar.password=admin

sonar-scanner-3.1.0.1141\conf\sonar-scanner.properties 在里面配置:

1
2
3
4
5
6
7
8
9
#----- Default SonarQube server
sonar.host.url=http://localhost:9000
#---- Default source code encoding
sonar.sourceEncoding=UTF-8
.# ip及port配置好本地的
sonar.jdbc.url=jdbc:mysql://localhost:3307/qjfsonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
#sonar.jdbc.url=jdbc:mysql://localhost:3307/qjfsonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
sonar.jdbc.username=root
sonar.jdbc.password=123456

此时打开浏览器,http://localhost:9000 应该就可以看到SonarQube的主页了。
如果访问不了,可以检查下面几方面:

  1. jdk版本要求1.8.0 及以上;
  2. MySQL 客户端版本要求是 5.6.2 以上;
  3. 防火墙关掉试试;

把sonar-scanner的路径配置到环境变量里面, 并在 Android Studio 根目录添加:

进行sonar-scanner 代码扫描:

扫描成功后,可以看到SonarQube上面已经有了扫描生成的日志了。

接下来我们把这个工具配置到jenkins上,不用自己执行命令,让jenkins 定时帮我们自动检查代码质量,生成质量扫描结果,
我们只需要查看生成的日志就可以了。

Jenkins+SonarQube 自动代码质量检查

本地配置Jenkins进行Android打包,这里不再赘述。

首先在SonarQube上面创建项目:

上面这个标识和名称要跟我们AS项目下面创建的sonar-project.properties 里面的projectKey和projectName保持一致。

需要安装SonarQube Servers 以及sonarQube Scanner plugin,并重新启动Jenkins。
在 “系统管理”—“系统设置”里面:

上面这个token非常关键,SenorQube5.3及以后版本使用token进行验证,从下图中获取;

在“系统管理—全局工具配置”里面:

在Jenkins中要构建项目的”配置”中:

在上面方框中如果我们不想配置solar-project.properties 中,那么我们可以把 Android Studio 中 solar-project.properties 的内容配置到下面的 “Analysis properties” 中也可以。

配置后构建成功的结果:

整个Jenkins构建过程重要日志:

SonarQube代码质量扫描结果:

其他

SonarQube可以配置各种各样的编译工具(Gradle,maven,ant等),适应各种各样的项目结构,通过插件形式支持不同的编程语言。可以通过pmd,checkstyle,findbugs等规则工具插件检测出各种各样的bug。另外还有对扫描质量问题进行严重性划分,项目权限控制等等。

您的支持将鼓励我继续创作