gpt4 book ai didi

gradle - 无法在多模块项目中使用 Sonar 运行器的集成覆盖

转载 作者:行者123 更新时间:2023-12-02 01:52:46 25 4
gpt4 key购买 nike

我有一个多模块项目,想用 SonarQube 可视化集成代码覆盖率。我能够生成 test.exec 和 integTest.exec (JaCoCo),但在强制 sonar-runner (sonar-jacoco-plugin) 使用它们时遇到问题。 sonar-runner 报告:

Project coverage is set to 0% since there is no directories with classes.

根项目(生成 integTest.exec 的地方)确实没有源文件(但集成覆盖率应该不是问题)。我的配置:

(...)
sonar.dynamicAnalysis=reuseReports
sonar.jacoco.reportPath=build/jacoco/test.exec
sonar.jacoco.itReportPath=build/jacoco/integTest.exec
sonar.modules=mod1,mod2
sonar.sources=src/main/java,src/main/resources
sonar.tests=src/test/java,src/test/groovy,src/test/resources
sonar.binaries=build/classes/main,build/resources/main

该项目是用 Gradle 构建的,但由于 CI 限制,我需要使用 sonar-project.properties 和 sonar-runner 配置(不是 Gradle 的 sonar-runner 插件,它在过去)。

更新。在分析了 sonar-jacoco-plugin 源之后,我试图创建一个定义为二进制目录的目录,但不幸的是,sonar-runner 根本没有为根模块设置 sonar.binaries 属性。

我的问题。有没有一种解决方法可以让我在带有 Sonar 运行器的多模块项目中使用包含集成覆盖率数据的文件?

最佳答案

作为一个丑陋的解决方法,我能够将报告路径配置为:

sonar.jacoco.reportPath=../build/jacoco/test.exec
sonar.jacoco.itReportPath=../build/jacoco/integTest.exec

对于二级模块(模块 mod1,它有自己的子模块 mod1amod1b):

mod1.sonar.jacoco.reportPath=../../build/jacoco/test.exec
mod1.sonar.jacoco.itReportPath=../../build/jacoco/integTest.exec

尽管如此,它很容易出错,我希望其他人能有更好的主意。

关于gradle - 无法在多模块项目中使用 Sonar 运行器的集成覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21805397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com