声纳不使用lcov文件

时间:2014-01-04 12:34:49

标签: jenkins sonarqube cloudbees

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

感谢您对此有任何见解。

1 个答案:

答案 0 :(得分:0)

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

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

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

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