我有一个Jenkins作业,它使用javascript项目的"Invoke独立Sonar分析“。
我认为它在以下参数下运行得很好:
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 --摘要目标/测试覆盖率/jscover.lcov.行.:48.1%的函数.:41.7%的分支.:没有找到数据
事实上,当我查看jscover.html报告文件时,总覆盖率为48%。声纳报告说是30%。
深入到各个文件中,Sonar的结果也与lcov文件中的结果不匹配。
例如:仅通过查看特定的文件/src/js/model/Call.js,lcov就表示它的代码覆盖率为97%。但是Sonar显示: 49.0%的单元测试线覆盖率:97.0%(97/100)分支覆盖率:0.0% (0/98)
这就好像Sonar正在使用分支覆盖和行覆盖率统计来获得最终代码覆盖率为49.0%的结果。
你知道我做错了什么吗?你知道为什么Sonar不使用lcov文件的覆盖结果吗?是不是因为该科的覆盖面没有数据?
谢谢你对此的洞察力。
发布于 2014-01-06 15:38:30
代码覆盖率由SonarQube重新计算。SonarQube只从报表中检索某一行是否由单元测试覆盖。示例:
然后SonarQube重新计算代码覆盖率:
https://stackoverflow.com/questions/20921058
复制相似问题