Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Как в проекте Kotlin Miltiplatform подключить Jacoco?

Доброго времени суток, товарищи. Есть проект, сборка которого управляется gradle.kts. Есть замечательный плагин для подсчёта покрытия кода юнит тестами Jacoco. Есть в этом проекте обычные jvm-модули, и у них всё в порядке. А есть Kotlin Multiplatform. И вот тут никак не могу понять, как прикрутить Jacoco, чтобы показывал покрытие хотя бы при тестировании под jvm.
Подумал, вдруг кто в курсе? Или хотя бы есть идеи.
П.С.: Если кто знает хотя бы, что такое Kotlin Multiplatform и Jacoco, но не уверен в ответе, хотя бы идею предложите, а то в этих мультиплатформенных проектах чёрт ногу сломит.
ПрограммированиеKotlin+1
Юрий Михайлуц
  ·   · 544
j,js,c,c+,r,t,a,mq  · 25 окт 2021
Вы просили, я не уверен, но принцип понятен, нужно разбить платформы и независимо их анализировать.
Кусок псевдокода.
val jacocoTestResultTaskName = "jacocoTestReport"
subprojects {
    jacoco {
        toolVersion = "0.8.7"
    }
    val sourceSets = java.sourceSets

    task<JacocoReport>(jacocoTestResultTaskName) {

        executionData(files("${buildDir}/jacoco/jvmTest.exec"))

        sourceSets(sourceSets["kotlin"])
        sourceDirectories.setFrom(files(sourceSets["kotlin"].allSource.srcDirs))
        classDirectories.setFrom(files(sourceSets["kotlin"].output))
        reports {
            xml.required.set(true)
            csv.required.set(false)
            html.outputLocation.set(layout.buildDirectory.dir("jacocoHtml"))
        }

    }
}

jacoco {
    toolVersion = "0.8.7"
}

tasks.register<JacocoReport>("codeCoverageReport")  {
    val jacocoReportTasks =
        subprojects
            .map { it.tasks[jacocoTestResultTaskName] as JacocoReport }
    dependsOn(jacocoReportTasks)

    val executionData = [[jacocoReportTasks.map](http://jacocoReportTasks.map)]([http://jacocoReportTasks.map](http://jacocoReportTasks.map)) { it.executionData }
    executionData(*executionData.toTypedArray())

    subprojects.forEach { testedProject ->
        val sourceSets = testedProject.java.sourceSets
        additionalSourceDirs.setFrom(files(sourceSets["kotlin"].allSource.srcDirs))
        sourceDirectories.setFrom(files(sourceSets["kotlin"].allSource.srcDirs))
        classDirectories.setFrom(files(sourceSets["kotlin"].output))
    }

    reports {
        xml.required.set(true)
        csv.required.set(false)
        html.outputLocation.set(layout.buildDirectory.dir("jacocoHtml2"))
    }

    onlyIf {
        true
    }

}
Благодарю. По крайней мере это подкрепляет мои подозрения. Чуть позже попробую. Если получится, сразу отпишусь.