【问题标题】:Unable to use integration coverage with sonar-runner in multi-module project无法在多模块项目中使用与 sonar-runner 的集成覆盖
【发布时间】:2014-03-15 08:25:33
【问题描述】:

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

项目覆盖率设置为 0%,因为没有包含类的目录。

对于根项目(在其中生成 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-runner 的多模块项目中使用带有集成覆盖数据的文件?

【问题讨论】:

    标签: gradle code-coverage jacoco sonar-runner sonarqube


    【解决方案1】:

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

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

    对于二级模块(一个模块mod1,它有自己的子模块mod1a和mod1b):

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

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

    【讨论】:

      猜你喜欢
      • 2017-12-14
      • 2014-04-06
      • 2012-09-23
      • 2013-03-16
      • 2017-01-10
      • 2012-12-28
      • 2014-10-13
      • 2013-10-24
      • 1970-01-01
      相关资源
      最近更新 更多