Android Gradle - SonarCloud集成与Jacoco插件,覆盖率始终是0.0%



我正试图将本地生成的覆盖率报告从Jacoco同步到SonarCloud,即使没有错误,覆盖率始终为0.0%。我能够生成一个总体覆盖率为86%的JacocTestReport.xml。

下面是构建的代码片段。gradle文件。请指导我如何与SonarCloud同步覆盖率报告。

plugins {
id "jacoco"
id "org.sonarqube"
}
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.google.firebase.crashlytics'
apply plugin: 'com.google.firebase.firebase-perf'
jacoco {
toolVersion = "0.8.8"
reportsDirectory.set(layout.projectDirectory.dir("src/jacoco"))
}
tasks.withType(Test) {
jacoco.includeNoLocationClasses = true
jacoco.excludes = ['jdk.internal.*']
}
task jacocoTestReport(type: JacocoReport, dependsOn: "testDebugUnitTest") {
group = "Reporting"
description = "Generate Jacoco coverage reports"
reports {
xml.required = true
html.required = true
}
def fileFilter = ['**/AndroidManifest.xml', '**/strings.xml', '**/*.xml', '**/*.json']
def mainSrc = "${project.projectDir}/src/main/java"
def kotlinTree = fileTree(dir: "$project.buildDir/tmp/kotlin-classes/debugUnitTest", excludes: fileFilter)
def kotlinTreeModels = fileTree(dir: "${project.projectDir}/src/main/java/com/<package_dir>/model", excludes: [])
sourceDirectories.setFrom(files([mainSrc]))
classDirectories.setFrom(files([kotlinTree, kotlinTreeModels]))
executionData.setFrom(fileTree(dir: "$project.projectDir",
includes: ['**/*.exec', '**/*.ec']
))
}
sonarqube {
properties {
property "sonar.organization", "<org_key>"
property "sonar.projectKey", "<project_key>"
property "sonar.projectName", "<project_name>"
property "sonar.projectVersion", "1.0"
property "sonar.exclusions", ['**/com/skydoves/powerspinner/*', 'robospice/**/*']
property "sonar.host.url", "https://sonarcloud.io"
property "sonar.sources", "src/main/java"
property "sonar.tests", "src/test/java"
property "sonar.sourceEncoding", "UTF-8"
property "sonar.test.inclusions", ["**/*Test*/**"]
property "sonar.login", "<SONAR_TOKEN>"
property "sonar.branch.name", "release-develop"
property "sonar.branch.target", "debug"
def unit = fileTree(dir: project.projectDir, includes: ['**/*.exec']).files;
def ui = fileTree(dir: project.projectDir, includes: ['**/*.ec']).files;
unit.addAll(ui);
def files = unit.join(", ");
property "sonar.jacoco.reportPaths", files
def reportXML = "${project.rootDir}/app/src/jacoco/jacocoTestReport/jacocoTestReport.xml"
property "sonar.coverage.jacoco.xmlReportPaths", ["src/jacoco/jacocoTestReport/jacocoTestReport.xml", "**/jacocoTestReport/jacocoTestReport.xml", reportXML]

property "sonar.java.coveragePlugin", "jacoco"
property "sonar.android.lint.report", "build/reports/lint-results.xml"
property "sonar.junit.reportsPath", "build/test-results/testDebugUnitTest"
}
}
android {
compileSdkVersion 32
buildToolsVersion "30.0.3"
defaultConfig {
applicationId "<package_name>"
minSdkVersion 23
targetSdkVersion 32
versionCode 1
versionName "1.0"
vectorDrawables.useSupportLibrary = true
resConfigs 'en', 'fr-rCA'
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}

buildTypes {
debug {
testCoverageEnabled true
}
}

testOptions {
unitTests.includeAndroidResources = true
unitTests.returnDefaultValues = true
unitTests.all {
jacoco {
includeNoLocationClasses = true
}
}
}
lint {
abortOnError false
checkReleaseBuilds false
}
}

configurations.all {
resolutionStrategy {
eachDependency { details ->
if ('org.jacoco' == details.requested.group) {
details.useVersion "0.8.8"
}
}
}
}

下面是项目构建的依赖项。gradle:

dependencies {
classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.4.0.2513"
classpath "org.jacoco:org.jacoco.core:0.8.8"
}

下面是gradle命令,我在Terminal中执行:

.gradlew clean connectedAndroidTest test createDebugCoverageReport jacocoTestReport sonarqube

谢谢。

我找到了解决方案。为了声纳不得不改变路径。信号源和声纳。测试属性。

property "sonar.sources", ["src/test", "src/main/java"]
property "sonar.tests", "src/test"
property "sonar.sourceEncoding", "UTF-8"
property "sonar.test.inclusions", ["src/test/java"]

相关内容

最新更新