kenkyee
12/30/2025, 2:00 PMhfhbd
12/30/2025, 2:36 PMdependencies {
for (subproject in subprojects) {
kover(subproject)
}
}kenkyee
12/30/2025, 4:49 PMhfhbd
12/30/2025, 4:50 PMhfhbd
12/30/2025, 4:50 PMkenkyee
12/30/2025, 4:51 PMhfhbd
12/30/2025, 4:51 PMkenkyee
12/30/2025, 4:51 PMhfhbd
12/30/2025, 4:54 PMkenkyee
12/30/2025, 5:03 PMkenkyee
12/30/2025, 5:18 PM// Kover configuration for code coverage
kover {
reports {
total {
// configure merged report here
}
}
}
// Automatically add all subprojects with Kover plugin for coverage aggregation
afterEvaluate {
dependencies {
subprojects.forEach { subproject ->
if (subproject.plugins.hasPlugin("org.jetbrains.kotlinx.kover")) {
kover(subproject)
}
}
}
}kenkyee
12/30/2025, 9:34 PMdependencies {
error("***** trying to include ${subprojects.joinToString(",") { it.name }}")
...
prints out
> ***** trying to includekenkyee
12/30/2025, 9:39 PMrootProject.subprojectshfhbd
12/30/2025, 9:52 PMhfhbd
12/30/2025, 9:53 PMkenkyee
01/02/2026, 9:09 PMfun Project.coverage(versionCatalog: Optional<VersionCatalog> = getLibsCatalog()) {
with(pluginManager) {
val catalog = versionCatalog.orElse(null) ?: run {
logger.warn("Version catalog 'libs' not found, skipping Kover configuration")
return
}
val koverPlugin = catalog.findPlugin("kover").orElse(null)?.get()?.pluginId ?: run {
logger.warn("Kover plugin not found in version catalog, skipping Kover configuration")
return
}
apply(koverPlugin)
}
if (project.path == ":") {
// configure this merged reports setup only for the root
extensions.configure<KoverProjectExtension> {
// see <https://github.com/Kotlin/kotlinx-kover/issues/599>
merge {
subprojects()
createVariant("main") {
add("debug", optional = true)
add("jvm", optional = true)
}
}
}
}
extensions.configure<KoverProjectExtension> {
reports {
filters {
excludes {
androidGeneratedClasses()
// Exclude all classes generated by Dagger Hilt in JVM modules
classes(
"*_HiltComponents*",
"*_HiltModules*",
"*_HiltInjector*",
"*_GeneratedInjector*",
"*_HiltViewModelFactory*",
"dagger.hilt.*",
"hilt_aggregated_deps.*",
"*_*Factory*",
"*_MembersInjector",
"*.HiltWrapper_*",
)
}
}
}
}
}