首页 文章

声纳不使用lcov文件

提问于
浏览
2

我有一个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 ... lines ......: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文件的覆盖率结果吗?是因为分行覆盖范围没有数据吗?

感谢您对此有任何见解 .

1 回答

  • 0

    代码覆盖范围由SonarQube重新计算 . SonarQube只是通过单元测试从报告中检索线是否被覆盖 . 例:

    • DA:10,0 =>这意味着第10行未被覆盖

    • DA:20,1 =>这意味着第20行被覆盖

    • DA:30,5 =>这意味着第30行被覆盖

    然后SonarQube重新计算代码覆盖率:

    • 有线数/ /(有线数)未覆盖线数

相关问题