JaCoCo 0.0% 覆盖率的 SonarQube 5,为什么?

SonarQube 5 with JaCoCo 0.0% Coverage, why?

自从为我们的项目将 JaCoCo 报告集成到 SonarQube 5.0.1 以来,我一直在努力。我总是在 SonarQube 中阅读 0.0% 的覆盖率。

TeamCity 9 生成了一个 testresults.xml 和一个 jacoco.exec 文件,我将其用于声纳 运行ner。 TeamCity 显示覆盖范围,因此 exec 文件接缝没问题。 Java 代码分析基本上在 SonarQube 中工作(FindBugs、PMD 等)

我有一个仍在使用 Ant 构建的多模块项目。 "core" 项目的单元测试在一个名为 "junit" 的自己的项目中。使用了 JUnit 4 库,但测试仍然是 JUnit 3。

这些是我在名为 "sonar-project.properties":

的文件中使用的相关 (?) 属性
core.sonar.tests                           = ../junit/src
core.sonar.junit.reportsPath               = /tmp/testresults.xml
core.sonar.core.coveragePlugin             = jacoco
core.sonar.jacoco.reportMissing.force.zero = false
core.sonar.jacoco.reportPath               = /tmp/jacoco.exec

属性 前缀 "core" 是因为他们正在配置模块 "core"。

路径应该是正确的。但是它说:"WARN - Reports path not found: /tmp/testresults.xml"路径是正确的,我不知道为什么会出现这个警告。

SonarQube 中的覆盖范围是否需要二进制文件?我还没有编译代码。

或者在我 运行 sonar-运行ner 之后 SonarQube 显示 0% 覆盖率的原因是什么?

首先:/tmp/testresults.xml这与覆盖率无关,但与测试结果导入(测试次数,成功测试)有关。

Do I need binaries for the coverage in SonarQube? I haven't compiled the code.

你的问题的答案就在这个审讯中:是的。 为了在读取 .exec JaCoCo 报告文件时计算覆盖率,JaCoCo 分析器(在 java 插件中使用)需要 .class 文件输入流,因此需要字节码来导入 JaCoCo 报告。所以请编译您的项目并通过 sonar.java.binaries 属性.

提供 class 文件