【发布时间】:2016-07-12 11:09:36
【问题描述】:
SonarQube 正在为我的项目报告以下内容。
Unit Tests Coverage 0.0%; Line Coverage 0.0%; Condition Coverage 0.0%
它无法找到在声纳扫描之前创建的报告。我正在使用 Jenkins 启动 SonarQube 扫描。事实上,在控制台输出中,我可以看到正在执行的单元测试和保存在 surefire 目录中的报告。
以下是控制台输出的相关日志。
[INFO] --- maven-surefire-plugin:2.12:test (default-test) @ earn-promotional-domain ---
[INFO] Surefire report directory: /var/jenkins/workspace/earn/surefire-reports
[INFO] [13:50:20.807] Sensor SurefireSensor
[INFO] [13:50:20.807] parsing /var/jenkins/workspace/earn/surefire-reports
[ERROR] [13:50:20.808] Reports path not found or is not a directory: /var/jenkins/workspace/earn/surefire-reports
[INFO] [13:50:20.808] Sensor SurefireSensor (done) | time=1ms
[INFO] [13:50:20.808] Sensor CoberturaSensor
[INFO] [13:50:20.808] parsing /var/jenkins/workspace/earn/site/cobertura/coverage.xml
我正在使用 SonarQube 5.1.2。如果需要任何其他有助于找出问题的信息,请告诉我。
【问题讨论】:
-
我使用 JaCoCo,但过程应该是相同的(ish)。您需要注入该仪器类的代理 (mojohaus.org/cobertura-maven-plugin) 然后您需要触发 sonarQube 分析。使用 cobertura 的结果(重用报告)或再次运行测试。在这里,我为 JaCoCo -Dsonar.binaries=target/classes -Dsonar.junit.reportsPath=target/surefire-reports -Dsonar.jacoco.reportPath=target/coverage-reports/jacoco-ut.exec
-
谢谢@drgn!我没有意识到我需要将目标目录作为参数提供,因为我有一个不同的项目,我不必提供目标目录。我能看到的唯一区别是,在不工作的项目中,有很多子项目,因此有很多子目录。您认为我必须将每个文件夹作为声纳报告路径吗?
-
这些子项目是maven项目,有自己的pom.xml吗?
-
是的。顶层有一个父 pom,但每个子项目都有自己的 pom 文件。
标签: maven jenkins junit sonarqube cobertura