2

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

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

我有一个仍然使用 Ant 构建的多模块项目。“核心”项目的单元测试位于一个名为“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-runner 后 SonarQube 显示 0% 覆盖率的原因是什么?

4

1 回答 1

1

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

我需要二进制文件来覆盖 SonarQube 吗?我还没有编译代码。

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

于 2015-03-18T13:05:06.893 回答