0

jacoco 覆盖率报告在 CI 环境中运行时是否有任何理由产生不同的结果?

迁移到 Java 17 后出现以下情况。当我运行./gradlew clean build报告时,会生成报告并且jacocoTestCoverageVerification不会失败。

但是,当在 github 运行器中执行相同的命令时,我得到了非常不同的结果,覆盖率报告也使用不同的覆盖率值创建,并且某些类只是未能通过覆盖率验证。

不幸的是,我无法提供代码片段,但我已经尝试过:

  • 在我的机器上运行 github 运行器,使用相同的 jdk,如果我只是在命令行中运行构建,它会产生不同的结果:(
  • 为测试任务添加 jvmargs noverify
  • 在容器而不是自托管中运行 github 操作,结果相同
  • 其他开发人员也在不同的机器上构建了该项目而没有错误
  • 运行与 ci 相同的构建命令

所以似乎 github action env 中的某些东西会产生这种行为。

版本:

  • jacoco 插件:0.8.7
  • 毕业7.3
  • 爪哇 17
4

1 回答 1

0

这里的问题是 lombok 配置文件。原来兼容java 17和Gradle 7.3的新版lombok插件不再生成lombok.config文件了。

在以前的版本中,这些文件是由io.freefair.lombok插件生成的,我们将它们放在 .gitignore 中。因此,本地构建工作得很好,因为文件仍然存在。

我通过查看生成的报告意识到了这一点,我注意到 lombok 类仅由 CI 分析。

在其他情况下,类似的问题可能与此有关: https ://www.eclemma.org/jacoco/trunk/doc/classids.html

于 2021-11-18T13:25:38.477 回答