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

SonarQube 5和JaCoCo 0.0%的覆盖率,为什么?,sonarqube,sonarqube-5.0,Sonarqube,Sonarqube 5.0,几天以来,我一直在为我们的项目将JaCoCo报告集成到SonarQube 5.0.1中。我总是阅读SonarQube的0.0%覆盖率 TeamCity 9生成了一个testresults.xml和一个jacoco.exec文件,我将其用于sonar runner。TeamCity显示覆盖范围,因此exec文件将正常运行。Java代码分析基本上在SonarQube中工作(FindBugs、PMD等) 我有一个多模块的项目,它仍然是用Ant构建的。“核心”项目的单元测试位于自己的名为“junit”的

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

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

我有一个多模块的项目,它仍然是用Ant构建的。“核心”项目的单元测试位于自己的名为“junit”的项目中。虽然使用了JUnit4库,但测试仍然是JUnit3

这些是我在名为“sonar project.properties”的文件中使用的相关(?)属性:

属性前缀“core”是因为它们正在配置模块“core”

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

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


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

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

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

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

过早地按下了return按钮。。。现在我在SonarQube中看到了覆盖率数据。百分比与TeamCity不同,我想我忘记了排除和包含。我现在在生成覆盖率文件时也使用了相同的JaCoCo版本,就像SonarQube使用的一样。在另一个论坛上,有人写道存在兼容性问题。不过,在做了一些修改之后,我将使用另一个JaCoCo版本来生成覆盖率文件(实际上TeamCity是用自己的JaCoCo版本来实现的)。然后我就会知道我是否真的需要完全相同的JaCoCo版本。幸运的是,它不需要完全相同的JaCoCo版本(SonarQube和TeamCity)。所以我猜他失踪了。但是,我仍然有另一个SonarQu中的覆盖率指标百分比可以与TeamCity中显示的覆盖率指标进行比较,原因不得而知,我需要找出原因。顺便说一句,我似乎误解了sonar.junit.reportsPath必须指向特定文件,但它似乎必须指向文件夹。
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