这个问题的根本原因可能是因为Kover和Sonar对代码覆盖率的计算方式略有不同。因此,建议使用不同的工具来进行比较。
下面是一个使用JaCoCo和SonarQube进行代码覆盖率测试的示例:
buildscript {
dependencies {
classpath 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.9'
}
}
plugins {
id 'jacoco'
id 'org.sonarqube' version '2.9'
}
jacoco {
toolVersion = "0.8.4" // 更新版本以匹配你当前的配置
}
android {
// 确保debug构建类型开启Jacoco
buildTypes {
debug {
testCoverageEnabled true
}
}
}
sonarqube {
properties {
// 您的 SonarQube 服务器的 URL
property "sonar.host.url", ""
// 您的 sonar.projectKey
property "sonar.projectKey", ""
// 您的SonarQube的访问令牌(必须在服务器上创建)
property "sonar.login", ""
}
}
执行命令 ./gradlew clean jacocoTestReport sonarqube
,该命令将构建项目、生成JaCoCo测试报告,并将代码分析结果上传到SonarQube服务器
在SonarQube的UI中查看代码覆盖率及其他代码质量分析指标
总之,使用JaCoCo和SonarQube可以帮助你更准确地分析Android/K