【问题标题】:Feed sonarqube jacoco widget with csv/html reports (instead of *.exec)使用 csv/html 报告提供 sonarqube jacoco 小部件(而不是 *.exec)
【发布时间】:2014-09-29 15:41:39
【问题描述】:

我有一个根maven项目,其下有很多独立的模块(例如module_A、module_B等)。

其中一个模块是我的集成测试模块,它使用了上述所有外部模块。 为了覆盖集成测试使用的所有模块的代码,我使用了基于 maven-ant 的解决方法(请参阅this blog post)。

问题是:

以上生成 csv/html 报告,但 sonarqube jacoco 小部件仅解析 jacoco*.exec 文件 - 这导致 0% 的代码覆盖率。

问题是:


编辑

这里有一个example project 来解决上述问题。

【问题讨论】:

    标签: maven sonarqube jacoco


    【解决方案1】:

    您不需要使用该解决方法。您可以为 Sonar 提供具有以下属性的集成测试覆盖文件(您应在执行 sonar:sonar 目标时使用它):

    -Dsonar.jacoco.itReportPath=<coverage_file>
    

    这里有详细的文档:

    http://docs.codehaus.org/display/SONAR/Code+Coverage+by+Integration+Tests+for+Java+Project

    总结一下:

    1. 编译所有模块。

    2. 在启用 jacoco 的情况下执行集成测试。

    3. 执行 Maven Sonar 构建,在命令行中添加提到的属性。

    我已经准备了生成单元和集成覆盖结果的示例项目,您可以在这里查看:

    https://github.com/octosan/unit-and-integration-jacoco-coverage-with-sonar

    你必须:

    • 下载最新的 Sonarqube 版本并启动它
    • 执行命令:
    mvn clean install sonar:sonar -Dsonar.jacoco.itReportPath=<absolute_path>/itest/target/jacoco-it.exec
    
    • 在 Sonar 的项目仪表板中添加集成覆盖范围

    【讨论】:

    • 以上不支持多模块maven项目(见jacoco open issue),因此不能使用。
    • 嗯,乍一看,这里的多模块与jacoco无关。 jacoco 仅用于生成覆盖文件,然后由 Maven 声纳插件(也处理多模块)解释。如果有时间我会详细检查。
    • 你说得对,多模块是一个 Maven 声纳插件问题,而不是单独的声纳问题,我指的是,请参阅 thread I've posted in jacoco google group 。还是谢谢
    • 我已经准备了适用于声纳的示例配置。你可以在这里查看:github.com/octosan/…。只需克隆,下载最新的 Sonarqube 版本并启动它,然后执行命令: mvn clean install sonar:sonar -Dsonar.jacoco.itReportPath=/itest/target/jacoco-it.exec 然后您将获得两个覆盖率报告:unit和整合。不要忘记在项目仪表板中添加集成覆盖。
    • 感谢您的努力!我已经分叉了你的例子来演示我遇到的更复杂的场景。如果你能看一看,那就太好了。请参阅我在问题中的编辑。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 2014-09-24
    • 2020-11-07
    • 1970-01-01
    • 2019-10-23
    • 2015-01-18
    • 2020-02-14
    相关资源
    最近更新 更多