##[警告]未找到覆盖率数据。检查构建 errors/warnings 以获取更多详细信息。 Azure DevOps - SBT - Jacoco

##[warning]No coverage data found. Check the build errors/warnings for more details. Azure DevOps - SBT - Jacoco

我正在使用 sbt-jacoco 计算代码覆盖率,并希望在 Azure DevOps 测试报告中发布 Jacoco 测试覆盖率结果。

这是我的任务:

  - script: "sbt jacoco"
    displayName: Run Jacoco

  - task: PublishCodeCoverageResults@1
    displayName: Publish code coverage report
    inputs:
      codeCoverageTool: 'JaCoCo'
      summaryFileLocation: $(System.DefaultWorkingDirectory)/target/scala-2.13/jacoco/report/html/index.html
      reportDirectory: $(System.DefaultWorkingDirectory)/target/scala-2.13/jacoco/report

这些任务已成功执行,结果作为工件在管道上共享。但是,它也会抛出一个警告

##[warning]No coverage data found. Check the build errors/warnings for more details.

我想在附加到管道的图表中查看结果。你能帮忙解决这个问题吗?

您的 'summaryFileLocation' 属性 似乎指向报告的 'html' 版本,而(根据 documentation)它应该指向 'xml' 的版本

我找到了解决方案。我需要按照以下方式调整配置设置。

 lazy val jacoco = jacocoReportSettings in Test := JacocoReportSettings(
      "Jacoco Coverage Report",
      None,
      JacocoThresholds(instruction = 10, method = 10, branch = 10, complexity = 10, line = 10, clazz = 10),
      Seq(JacocoReportFormats.ScalaHTML, JacocoReportFormats.XML),
      "utf-8"
    )

  override def projectSettings: Seq[Setting[_]] = super.projectSettings ++ jacocoSettings

在 Azure Pipelines 中它将是;

  - task: PublishCodeCoverageResults@1
    inputs:
      codeCoverageTool: 'JaCoCo'
      summaryFileLocation: $(jacocoReportDir)/report/jacoco.xml
      reportDirectory: $(jacocoReportDir)/report/html