该篇为我在Android studio上集成SonarQube插件的过程记录。因公司在内网已经搭建了SonarQube服务,本文不涉及到该内容。
一、使用Gradle集成
1. 在build.gradle文件里添加:
maven {
url "https://plugins.gradle.org/m2/"
}
classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.3"
apply plugin: "org.sonarqube"
2. 在gradle.properties中添加服务器配置
systemProp.sonar.host.url=http://localhost:9000
systemProp.sonar.login=admin
systemProp.sonar.password=admin
如图:
http://localhost:9000 为你的服务器地址,如果你的公司有Sonar服务器,则改成你公司的服务器地址
systemProp.sonar.login=admin systemProp.sonar.password=admin
这俩分别是你Sonar服务器的用户名及密码。admin是默认的
3. 在app项目中的build.gradle中添加配置
sonarqube {
properties {
property "sonar.host.url", "http://localhost:9000" //sonar管理系统地址
property "sonar.login", "admin" // sonar管理系统账号
property "sonar.password", "admin" // sonar管理系统密码
property "sonar.sourceEncoding", "UTF-8"
property "sonar.projectKey", "com.wbb.sonarqubedemo" //sonar平台中相对应项目的key
property "sonar.projectName", "sonarqubedemo" //sonar平台中相对应项目的名字
property "sonar.sources", "src/main/java" //源码,sonar检测的源文件目录
property "sonar.projectVersion", project.version //版本,随意
property "sonar.java.binaries", "build/intermediates/javac/intranetDebug/classes"
}
}
如下图:
sonar.java.binaries 为JAVA编译后的字节码地址,我一开始网上查找的地址是property “sonar.binaries”, “build/intermediates/classes”,但我这边没有这个目录,改成上图的目录。这个主要还是看你的项目目录。
4. 执行
最后,执行./gradlew sonarqube 或者 gradlew sonarqube 开始运行
成功后,你在刷新服务器的网页,应该就有你的项目了。
二、遇到的问题
1. SonarQube server [http://192.168.0.*:9000] can not be reached
连接不到我公司的内网服务器,这是因为我配置了vpn导致了
mac 下,地址在/Users/你的username/.gradle目录下,gradle.properties文件下注释掉vpn。以及项目下gradle.properties文件里注释掉。我当时是把项目里的注释了,全局的没有注释。
2. build/intermediates/classes找不到目录
我的项目没有该目录,修改成build/intermediates/javac/intranetDebug/classes解决
参考:
官方文档:https://docs.sonarqube.org/latest/analysis/scan/sonarscanner-for-gradle/