如何在多模块 android 项目 (kotlin + java) 上配置 SonarQube(使用 jacoco)?

How to configure SonarQube (with jacoco) on multi module android project (kotlin + java)?

我见过不同规范的不同方法:仅 java,仅单个模块,带有 jacoco exec 文件或 xml sonarqube 报告,sonarqube.gradle 包含在所有模块中或仅包含在根....并尝试了很多。最后我总是挣扎,我的一些要求不工作。

有没有人有适合我所有需要的方法?

我创建了一个测试项目,它满足了我 github repo

中的所有需求

关键事实是您必须将声纳任务放在根 gradle 文件中,并将 jacoco 任务放在项目的任何模块中。

重要的声纳特性是: sonar.host.urlsonar.coverage.jacoco.xmlReportPaths

对于 jacoco 任务,您必须定义 java-类 "../app/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/de/logerbyte/jacocotest/javaClasses",您的 kotlin-类 "../app/build/tmp/kotlin-classes/debug/de/logerbyte/jacocotest" 和每个模块的正常 src "../app/src/main/java"

根据这些信息,您必须在您自己创建的 jacoco 任务中设置属性 classDirectoriesexecutionDatasourceDirectoriers

最后你 运行 buildtestDebugUnitTestjacocoTestReportsonarqube 的 gradle 个任务。