“项目覆盖率设置为 0%” – JaCoCo 和 Sonar 在 Jenkins 中与 Ant

2024-01-07

我将工作从单个 Hudson 机器转移到了多从机 Jenkins 环境,现在 JaCoCo 覆盖范围不再起作用。

工作(旧): 哈德森2.0.1, 詹金斯声纳插件 1.7.1, 声纳2.1.2

破损(新): 詹金斯 1.446, 詹金斯声纳插件 1.7.2, 声纳2.1.2

我的 Hudson 作业称为 Pinnacle,它过去在单个 Hudson 服务器上运行,Sonar 在同一台机器上运行。我通过执行以下操作来设置我的(非 MAVEN)构建。

1) 在我的 build.xml 中添加了一个 Ant 目标,名为test-with-coverage

2) 将 Hudson 中的 Pinnacle 作业配置为具有以下属性的“调用独立声纳分析”:

sonar.projectKey=com.skyboximaging:pinnacle
sonar.projectName="Pinnacle"
sonar.projectVersion=1.0
sources=Pinnacle/src/java
tests=Pinnacle/test/java
binaries=Pinnacle/classes
sonar.jacoco.reportPath=Pinnacle/jacoco.exec
sonar.jacoco.antTargets=test-with-coverage

(请注意,代码已检出到 Jenkins 作业工作区的 Pinnacle 目录中。)

3)配置Sonar“常规设置”以使用JaCoCo进行代码覆盖

一切都很顺利!

但在新的 Jenkins 环境中,我在 Jenkins 构建输出中看到此错误:

23:15:17.863 INFO  Sensor JaCoCoSensor...
23:15:17.868 INFO  Project coverage is set to 0% as no JaCoCo execution data has been dumped: /var/lib/jenkins/workspace/Pinnacle/Pinnacle/jacoco.exec

该文件在运行构建的从属设备上不存在。 (目录 /var/lib/jenkins/workspace/Pinnacle/Pinnacledoes exist.)

所有其他传感器(FindBugs、PMD 等)似乎都工作正常。只是JaCoCo坏了。

Sonar/JaCoCo 甚至可以在多从机 Jenkins 环境中工作吗?

我怀疑 Ant 任务test-with-coverage没有运行。 Sonar如何定位build.xml?新旧安装有什么不同?


我最近设置并成功让 Sonar 和 Jacoco 一起运行。因为我最近才接触这个主题,所以我想我应该在 stackoverflow 上检查类似的问题并提供帮助。我从 Jacoco 获得结果,但发现除了您在帖子中列出的属性之外,您还必须显式设置以下参数:

sonar.core.codeCoveragePlugin=jacoco
sonar.jacoco.reportPath=tests/jacoco-exec/jacoco.exec
sonar.dynamicAnalysis=reuseReports
sonar.surefire.reportsPath=tests/test-reports

如果您希望能够使用 sonar.jacoco.reportPath 属性,则必须设置 sonar.core.codeCoveragePlugin=jacoco 。否则,您将必须使用 sonar.jacoco.itReportPath 属性。但是,我建议仅设置 codeCoveragePlugin 和 reportPath 属性。否则,它不会显示在声纳中的默认覆盖小部件下。请注意,默认覆盖工具和 jacoco 不能一起使用。它必须是其中之一。我决定使用Jacoco。

您的 ant 目标必须配置为在运行声纳任务之前生成 jacoco.exec 结果:

<jacoco:coverage enabled="${tests.code.coverage}" destfile="${jacoco.exec.dest}">
  <junit fork="yes" printsummary="withOutAndErr" dir="${tests.working.dir}">
  ...

如果您在声纳之前运行 junit,即如果您在声纳之外运行 junit,请务必告诉声纳重复使用报告和任何 sunfire 报告:

sonar.dynamicAnalysis=reuseReports
sonar.jacoco.reportPath=tests/jacoco-exec/jacoco.exec
sonar.surefire.reportsPath=tests/test-reports

无论出于何种原因,如果您需要更详细的调试,请使用以下属性:

声纳.verbose=true

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“项目覆盖率设置为 0%” – JaCoCo 和 Sonar 在 Jenkins 中与 Ant 的相关文章

随机推荐

  • 国际化 HelloWorld 程序 .NET

    我有一个小型测试应用程序 它有 2 个资源文件 Resources resx Resources de DE resx 具有完全相同的字符串名称 但将字符串转换为德语 对于我的表单 我将 Localize 属性设置为 true 在我的应用程
  • Postgresql 转储权限被拒绝

    我在尝试转储数据库时收到此错误 我输入 linuxuser sudo su postgres linuxuser sudo password for linuxuser pg dump h localhost mydb gt tempfil
  • 枚举不应该在 API 中使用吗?

    我正在使用提供给我的已编译的 C 库 我对编译库时使用的编译器 版本 选项等的信息有限 库接口使用enum既可以在传递的结构中 也可以直接作为传递的参数 问题是 如何确保或确定当我编译代码以使用提供的库时 我的编译器将为这些库使用相同的大小
  • 如何将 Gradle 中的原生 JUnit 5 支持与 Kotlin DSL 结合使用?

    我想将内置 JUnit 5 与 Gradle Kotlin DSL 一起使用 因为在构建过程中我收到此警告 WARNING The junit platform gradle plugin is deprecated and will be
  • 所有构建的 gcloud 步骤超时的全局限制在哪里设置?

    在哪里可以找到 gcloud 构建步骤超时的全局限制 这是我的 gcloud 构建配置 steps name gcr io cloud builders yarn name gcr io cloud builders yarn args b
  • 在 yaml.dump Python 中强制引用

    在我进入之前 是的 我已经研究过它并且知道 YAML 不区分引号和非引号 而只是按原样获取类型 坦率地说 我认为没有引号更好 但不幸的是这不是我需要的 所以请尝试理解我have研究了这个问题 但仍然需要我的字符串对象周围的引号 在我的代码中
  • readAsDataURL 不处理 captureAudio 中的文件

    我的 FileReader 对象可以完美上传图像 我正在追踪onload以及其他事件 这些都在我上传图像时发生 fileReader new FileReader fileReader onloadstart e gt window ale
  • 在根模块中使用 aws_vpc 数据源的 Terraform 鸡/蛋问题

    我有一个根 Terraform 模块 它声明了 VPC 模块和其他模块 例如要在 VPC 中启动的 EC2 实例 在 EC2 模块中 我使用以下命令读取 VPCaws vpc type data aws vpc vpc filter nam
  • 在 Java 中将 DatagramPacket 转换为字节数组后解析它

    我正在尝试解析我将在套接字上收到的 DatagramPacket 我知道我将收到的数据包的格式 即 DHCPREQUEST 数据包 但我认为这并不重要 为了简单起见 我们只考虑前六个字段 第一个字段是 操作码 为 1 个字节 第二个字段是
  • 将调整大小的位图文件设置为 MFC 优化校准

    有没有比这更简单的方法 如果这是唯一的方法 这里是否存在潜在的内存泄漏 CImage img1 int dimx 100 dimy 100 img1 Load filename filename path on local system t
  • 内容安全策略 Internet Explorer 错误

    我添加了 Content Security Policy 它在 Chrome Firefox 和 Opera 上工作正常 但在 Internet Explorer 11 上我遇到此错误 此页面无法显示 add header Content
  • 多个图像处理程序调用导致 IE 在弹出窗口中挂起

    我们有一个ashx图像处理程序在过去几年中表现相当不错 但我们最近注意到一些奇怪的间歇性行为IE8 and IE9 我们有一个图库页面 作为图像 src 属性的一部分多次调用图像处理程序 该页面在弹出窗口中打开 该页面工作正常 但当窗口快速
  • 使用生成的匿名登录 ID 登录用户

    我正在编写一个 Android 应用程序 我正在尝试让用户匿名登录 这样他们就不必经历任何类型的注册过程 我将他们的匿名用户 ID 存储在共享首选项中 当应用程序打开时 我尝试根据该用户 ID 登录他们 我试图找出执行此操作的正确方法 因为
  • Centos htaccess 不被读取

    我正在开发一台新服务器 并通过 yum 安装了 Web Server 组 Php 和 mysql 工作正常 但我无法让 htaccess 工作 这是我的测试 htaccess 文件 WASD TEST CALL ERROR 我将其作为 ht
  • 简单的 IPython 示例在 sys.exit() 上引发异常

    我正在 IPython 中做一些非常简单的 PySide 和 PyQt 教程 一个教程只是创建一个带有一些滑块的窗口来演示插槽和信号 当我关闭正在运行的演示应用程序的窗口时 我看到以下错误 An exception has occurred
  • 访问在缓存块 Rmarkdown 文档中创建的全局环境对象

    我想运行 R 脚本来运行模拟并缓存 Rmarkdown 文档的结果 我正在使用 Rstudio 并尝试使用 knit HTML 创建 HTML 报告 这是一个简单的示例 r test global env cache TRUE print
  • 局部静态和局部变量的内存分配

    1 void main void int ptr1 ptr1 int malloc 2 void main void static int ptr2 ptr2 int malloc 我想问ptr1和ptr2的内存分配是如何完成的 The p
  • 如何在VBA中将自动生成的单选按钮设置为true?

    我正在创建一个 Excel 工作表 其中根据特定参数的值自动生成单选按钮 请参阅此以获得清晰的理解 复制一组单选按钮n次数 在哪里n是引用参数的行数 应根据条件检查此自动生成矩阵中的每个单选按钮 并且在与条件匹配的一组中 十二个单选按钮之一
  • CSS 中的 HTML 注释?

    我正在查看一些Amazon http en wikipedia org wiki Amazon com的 CSS 并注意到他们用 HTML 注释掉了 CSS 的一大块 我知道 Internet Explorer 具有 HTML 注释的条件格
  • “项目覆盖率设置为 0%” – JaCoCo 和 Sonar 在 Jenkins 中与 Ant

    我将工作从单个 Hudson 机器转移到了多从机 Jenkins 环境 现在 JaCoCo 覆盖范围不再起作用 工作 旧 哈德森2 0 1 詹金斯声纳插件 1 7 1 声纳2 1 2 破损 新 詹金斯 1 446 詹金斯声纳插件 1 7 2