Sonarqube默认覆盖范围为0,来自具有绝对路径的Karma Coverage LCOV文件

时间:2016-11-29 07:57:04

标签: javascript sonarqube karma-runner code-coverage karma-coverage

当路径在我的lcov文件中是绝对路径时,Sonar不会检索项目的覆盖率信息。对于文件:

TN:
SF:/mnt/vg01-data01/jenkins/<jenkins.myhost.com>/jenkins_home/workspace/<job1>/src/app.js
FN:,(anonymous_0)
FN:,(anonymous_1)
FNF:2
FNH:2
FNDA:1,(anonymous_0)
FNDA:2,(anonymous_1)
DA:3,1
DA:4,1
DA:6,1
DA:7,1
DA:8,1
DA:9,1
DA:11,1
DA:18,1
DA:19,1
DA:22,2
DA:27,1
LF:11
LH:11
BRF:0
BRH:0
end_of_record
....

我收到以下警告:

...
05:06:27.565 INFO: Analysing [/srv/jenkins/<jenkins.myhost.com>/jenkins_home/workspace/<job1>/coverage/lcov.info]
05:06:27.574 DEBUG: Default value of zero will be saved for file: src/app.js
05:06:27.574 DEBUG: Because was not present in LCOV report.
05:06:27.578 DEBUG: Default value of zero will be saved for file: src/app.spec.js
05:06:27.578 DEBUG: Because was not present in LCOV report.
05:06:27.579 DEBUG: Default value of zero will be saved for file: src/js/form/form.ctrl.js
05:06:27.579 DEBUG: Because was not present in LCOV report.
05:06:27.580 DEBUG: Default value of zero will be saved for file: src/js/form/form.module.js
05:06:27.580 DEBUG: Because was not present in LCOV report.
05:06:27.581 DEBUG: Default value of zero will be saved for file: src/js/success/success.ctrl.js

...

但是,默认情况下,karma(和istambul)正在生成具有绝对路径的文件。

如果我更改路径以使它们相对,则sonarqube会正确报告覆盖范围。但是,我必须确保一个&#34; lcov补丁&#34;在向声纳报告之前,始终会运行脚本。

声纳是否支持绝对路径?其他团队为此问题做了什么?这些是我正在使用的版本:

  • karma@1.3.0&amp; karma-coverage@1.1.1
  • sonar 6.1和JavaScript plguin 2.14

更新:我将文件和日志替换为作业中的确切文件(出于安全原因,我仍然必须更改主机和作业的名称。)

2016年3月更新:我已向Istambul发送了一个Pull请求,以便生成具有相对路径的lcov文件。我希望这可以解决这个问题https://github.com/gotwarlost/istanbul/pull/771

1 个答案:

答案 0 :(得分:2)

SonarQube JavaScript插件应该能够处理LCOV文件中的相对路径和绝对路径。但是,您的设置似乎不正确。您的LCOV文件引用给定目录中的文件路径:

SF:/home/mrincon/work/git/promoter-app-client/src/app.js

根据您的分析日志,您的分析似乎在另一个目录中运行:

Analysing [/srv/jenkins/master/jenkins_home/workspace/job1/coverage/lcov.info]

也许你在一台机器上生成LCOV文件并在另一台机器上运行分析......最后,SonarQube不能将LCOV文件中包含的路径与分析的文件相匹配。

你应该:

  • 生成LCOV报告并从中运行SonarQube分析 目录,
  • 或让您的LCOV文件仅包含相对路径。