如何在多模块 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.url
和sonar.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 任务中设置属性 classDirectories
、executionData
和 sourceDirectoriers
。
最后你 运行 build
、testDebugUnitTest
、jacocoTestReport
和 sonarqube
的 gradle 个任务。
我见过不同规范的不同方法:仅 java,仅单个模块,带有 jacoco exec 文件或 xml sonarqube 报告,sonarqube.gradle 包含在所有模块中或仅包含在根....并尝试了很多。最后我总是挣扎,我的一些要求不工作。
有没有人有适合我所有需要的方法?
我创建了一个测试项目,它满足了我 github repo
中的所有需求关键事实是您必须将声纳任务放在根 gradle 文件中,并将 jacoco 任务放在项目的任何模块中。
重要的声纳特性是:
sonar.host.url
和sonar.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 任务中设置属性 classDirectories
、executionData
和 sourceDirectoriers
。
最后你 运行 build
、testDebugUnitTest
、jacocoTestReport
和 sonarqube
的 gradle 个任务。