自从我们的项目将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 - 报告路径未找到:/tmp/testresults.xml”路径是正确的,我不知道为什么会出现此警告。
SonarQube的覆盖范围是否需要二进制文件?我没有编译代码。
或者,在我运行声纳 - 跑步者之后,SonarQube显示0%覆盖率的原因是什么?
答案 0 :(得分:1)
首先:/tmp/testresults.xml
这与覆盖范围无关,但导入测试结果(测试次数,成功测试)。
SonarQube的覆盖范围是否需要二进制文件?我没有编译代码。
你的问题的答案在于这个讯问:是的。
为了在读取.exec JaCoCo报告文件时计算覆盖率,JaCoCo分析器(在java插件中使用)需要.class文件输入流,因此需要字节码来导入JaCoCo报告。因此,请编译您的项目并通过sonar.java.binaries
属性提供类文件。