【问题标题】:Sonarqube 4.3 dont trigger Cobertura unit test execution on JenkinsSonarqube 4.3 不会在 Jenkins 上触发 Cobertura 单元测试执行
【发布时间】:2014-07-10 16:06:16
【问题描述】:

我们有 SonarQube v3.4,最近升级到了 SonarQube V4.3。我们还使用 Jenkins 构建和触发 Maven 项目的声纳分析,并使用 Cobertura 作为代码覆盖工具。

在 3.4 版本中,Sonar 用于触发(使用 Jenkins)cobertura 执行并收集数据,但是当我们升级到 Sonar 4.3 时,Sonar 中没有选项可以选择默认的代码覆盖工具 Jenkins Sonar执行不再触发 cobertura 和单元测试执行。现在它需要一个 Jacoco 转储文件,以便向声纳提供覆盖数据。

我在 Sonarqube confluence 中找不到任何有用的文档。

我们如何配置 Sonar 以使用 Cobertura(不修改所有项目的 pom 文件)并从 Jenkins 触发代码覆盖单元测试执行?

谢谢!

【问题讨论】:

  • 现在执行 Sonar 的推荐方法似乎是重用生成的覆盖率报告,但在任何地方都找不到该信息。更令人沮丧的是,重用来自 Cobertura 的报告会引发 Jacoco! 的异常。没有可见的方法来禁用 Jacoco,它不断抛出 org.sonar.api.utils.SonarException: Can not add two same measure on ...
  • 我对 Jacoco 也有同样的问题。我的解决方案是简单地从插件文件夹中删除 jacoco jar,这会禁用 Jacoco。
  • @StevenPessall 此解决方法可行,但真正的解决方案是我在下面的答案中提供的解决方案。

标签: unit-testing maven jenkins code-coverage sonarqube


【解决方案1】:

从 Java 插件 2.2 版和 Cobertura 插件 1.6 版开始,SonarQube 不再触发单元测试执行:只有重用报告模式可用。

请注意,这两个插件的推荐版本是 Java 2.2.1 和 Cobertura 1.6.1 的固定版本,以防止 JaCoCo 和 Cobertura 插件之间的冲突(这将在 2.2 中发生)。

因此,选择默认代码覆盖率工具的属性不再相关,您只需提供覆盖率报告(cobertura 或 JaCoCo)即可获取覆盖率信息。

请参阅这些文档以大致了解如何执行此操作: http://docs.codehaus.org/display/SONAR/Cobertura+Plugin http://docs.codehaus.org/display/SONAR/JaCoCo+Plugin

【讨论】:

  • 您好,我查看了更新中心,但目前Java Plugin 2.2.1 没有更新。现在有什么方法可以更新吗?2.2.1版本在更新中心有日期吗?谢谢!。
  • 我从docs.codehaus.org/display/SONAR/Java+Ecosystem 下载了Java 插件2.2.1,并在Sonar 扩展文件夹中手动安装。我确认 Cobertura 的问题已修复。谢谢!。
  • 我相信 Java 2.2.1 现在可以通过更新中心获得。 8 小时前不可用,但现在可用。
  • @axle123 是的,事实上它应该已经可用了。现在可以了。
  • 似乎此更改的副作用是代码覆盖率仅报告包含至少一个单元测试的项目。尚未包含任何单元测试的项目不包括在内,从而人为地提高了覆盖率。
猜你喜欢
  • 2016-09-21
  • 1970-01-01
  • 2015-05-06
  • 1970-01-01
  • 1970-01-01
  • 2012-06-12
  • 2019-04-25
  • 2016-01-31
  • 2014-07-15
相关资源
最近更新 更多