我有一个Jenkins工作,正在为一个javascript项目使用“Invoke standalone Sonar analysis”。
我认为它可以正常使用以下参数:
sonar.sources=src
sonar.language=js
sonar.dynamicAnalysis=reuseReports
sonar.javascript.jstestdriver.coveragefile=target/test-coverage/jscover.lcov
sonar.javascript.lcov.reportPath=target/test-coverage/jscover.lcov
但后来我注意到Sonar中报告的数字与lcov文件中的数字不匹配。
当我登录Sonar时,我看到代码覆盖率为30%。
但是当我检查lcov文件时,我会得到完全不同的数字: $ lcov --summary target / test-coverage / jscover.lcov ... 线......:48.1% 功能..:41.7% 分支......:没有找到数据
事实上,当我查看jscover.html报告文件时,我发现总覆盖率为48%。 声纳以30%报告。
深入研究单个文件,Sonar的结果与lcov文件中的结果不匹配。
例如: 只需查看特定文件/src/js/models/Call.js,lcov就说它的代码覆盖率为97%。 但是声纳显示了这个: 单位测试49.0%线路覆盖率:97.0%(97/100)分支覆盖率:0.0%(0/98)
就好像Sonar正在使用分支覆盖率和线覆盖率统计数据来获得49.0%的最终代码覆盖率结果。
你知道我做错了什么吗?你知道为什么Sonar没有使用lcov文件的覆盖率结果吗?是因为分支覆盖范围没有数据吗?
感谢您对此有任何见解。
答案 0 :(得分:0)
SonarQube重新计算代码覆盖率。 SonarQube只是通过单元测试从报告中检索线是否被覆盖。例如:
然后SonarQube重新计算代码覆盖率: