我使用EclEmma使用以下路径生成了覆盖率报告:
C:/tmp/coverageReport/report.exec
此文件存在,不为空且可读。 关于代码覆盖的我的sonnar-runner配置定义如下:
sonar.java.coveragePlugin=jacoco
sonar.junit.reportsPath=C:/tmp/coverageReport/report.exec
分析成功完成,但单元测试覆盖小部件中没有数据可见。
此外,我在分析过程中得到以下几行:
18:23:45.036 INFO - parsing C:/tmp/coverageReport/report.exec
18:23:45.037 WARN - Reports path not found: C:/tmp/coverageReport/report.exec
关于我缺少的任何想法?
答案 0 :(得分:7)
sonar.junit.reportPath和sonar.jacoco.reportPath之间存在很大差异。你正在混淆价值观。
同样,还有sonar.jacoco.itReportPath(对于基于jaocco.exec文件的非单元测试,例如:jacocoIT.exec(如果您正在为集成测试创建)。
现在,根据sonarQube实例(4.x或最新5.xx)的版本,您可能需要将sonar.junit.reportPath或sonar.java.junit.reportPath设置为值(即文件夹)包含.xml数据)。
对于前:如果我的单元测试或集成测试文件夹的结果文件(.xmls)位于文件夹build / test-results / UT文件夹中,则:
sonar.java.junit.reportPath=build/test-results/UT
或
sonar.junit.reportPath=build/test-results/UT
对于代码覆盖率文件(.exec),您必须使用:
sonar.jacoco.reportPath=build/jacoco/UT/jacocoUT.exec
或
sonar.jacoco.itReportPath=build/jacoco/IT/jacocoIT.exec
重要 - 声纳属性:
声纳。 jacoco .xxx 指向文件名。
声纳。 junit .xxx 或声纳。 java.junit .xxx 指向文件夹名称。声纳。 surefire .xxx 或声纳。 java.surefire .xxx 指向文件夹名称。
与 sonar.junit.reportPath 类似,还有另一个名为:sonar。 surefire .reportPath或sonar的属性。 java.surefire < /strong>.reportPath。在使用Maven / Gradle分析源代码时,查找Sonar文档以获得更多帮助。
http://docs.sonarqube.org/display/SCAN/Analyzing+Source+Code(展开)。
例如:在Analyze with Gradle build system下,查找配置分析属性部分/更多。