Coverage reporting improvements
Some checks failed
SonarQube Scan / SonarQube Trigger (push) Failing after 8m48s

- add coverage to sonar
- coverage in domain and commonUI
This commit is contained in:
2025-10-12 14:11:25 +02:00
parent e5f840a873
commit 255a61cf56
3 changed files with 47 additions and 40 deletions

View File

@@ -1,10 +1,11 @@
import com.android.build.gradle.internal.coverage.JacocoReportTask
import com.android.build.gradle.internal.lint.AndroidLintTask
import com.github.benmanes.gradle.versions.updates.DependencyUpdatesTask
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile
import org.sonarqube.gradle.SonarTask
plugins {
// this is necessary to avoid the plugins to be loaded multiple times
// in each subproject's classloader
alias(libs.plugins.versions)
alias(libs.plugins.sonarqube)
alias(libs.plugins.android.application) apply false
@@ -20,9 +21,31 @@ sonar {
properties {
property("sonar.projectKey", "YAEP")
property("sonar.projectName", "YAEP")
val reports = subprojects
.flatMap { p ->
p.tasks.withType<JacocoReportTask>()
}
.map { t ->
"${t.outputReportDir.asFile.get()}/report.xml"
}
property(
"sonar.coverage.jacoco.xmlReportPaths",
reports
)
}
}
tasks.withType<SonarTask>().configureEach {
dependsOn(
subprojects.flatMap { it.tasks.withType<AndroidLintTask>() }
)
dependsOn(
subprojects.flatMap { it.tasks.withType<JacocoReportTask>() }
)
}
tasks.withType<KotlinJvmCompile>().configureEach {
compilerOptions {
jvmTarget.set(JvmTarget.fromTarget(libs.versions.jdk.get()))
@@ -41,3 +64,11 @@ fun isNonStable(version: String): Boolean {
|| version.contains("beta", ignoreCase = true)
|| version.contains("RC", ignoreCase = true)
}
subprojects {
tasks.withType<Test> {
testLogging {
events("passed", "skipped", "failed")
}
}
}

View File

@@ -1,4 +1,5 @@
plugins {
jacoco
alias(libs.plugins.kotlin.multiplatform)
alias(libs.plugins.android.library)
alias(libs.plugins.compose)
@@ -11,13 +12,6 @@ kotlin {
jvm()
androidTarget()
// @OptIn(ExperimentalWasmDsl::class)
// wasmJs {
// moduleName = "yaep-commonUI"
// browser()
// binaries.executable()
// }
sourceSets {
commonMain {
dependencies {
@@ -61,6 +55,19 @@ android {
buildFeatures {
compose = true
}
sourceSets {
getByName("test") {
resources.srcDirs("src/commonTest/resources")
}
}
buildTypes {
debug {
enableAndroidTestCoverage = true
enableUnitTestCoverage = true
}
}
}
compose.resources {

View File

@@ -1,6 +1,5 @@
plugins {
jacoco
`jvm-test-suite`
alias(libs.plugins.kotlin.multiplatform)
alias(libs.plugins.android.library)
}
@@ -24,36 +23,6 @@ kotlin {
implementation(libs.atrium)
}
}
jvmTest {
tasks.register(name = "jacocoTestReport", type = JacocoReport::class) {
group = "verification"
description = "Generate Jacoco coverage report"
dependsOn(tasks.withType(Test::class))
val coverageSourceDirs = arrayOf(
"src/commonMain"
)
val buildDirectory = layout.buildDirectory
val classFiles = buildDirectory.dir("classes/kotlin/jvm").get().asFile
.walkBottomUp()
.toSet()
classDirectories.setFrom(classFiles)
sourceDirectories.setFrom(files(coverageSourceDirs))
buildDirectory.files("jacoco/jvmTest.exec").let {
executionData.setFrom(it)
}
reports {
xml.required = true
}
}
}
}
}