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

2023-08-01前端开发问题
44

本文介绍了Sonarqube 默认覆盖范围为 0,来自具有绝对路径的 Karma Coverage LCOV 文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

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

Sonar does not retrieve the coverage information for my project when paths are absolute in my lcov file. For the file:

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

...

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

However, by default karma (and istambul) are generating file with absolute paths.

如果我更改路径以使其相对,sonarqube 会正确报告覆盖范围.但是,我必须确保在向声纳报告之前始终运行lcov 补丁"脚本.

If I change the paths to make them relative, sonarqube reports the coverage correctly. However, I must ensure a "lcov patch" script is always run before reporting to sonar.

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

Does sonar support absolute paths? What are other teams doing for this issue? These are the versions I am using:

  • 业力@1.3.0 &业力覆盖@1.1.1
  • 声纳 6.1 和 JavaScript 插件 2.14

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

Update: I replaced the file and log I see with the exact ones from the jobs (I still must change the name of the host and job for security reasons.)

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

Update March 2016: I have sent a Pull Request to Istambul to enable to generate lcov file with relative paths. I expect this to solve this issue https://github.com/gotwarlost/istanbul/pull/771

推荐答案

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

The SonarQube JavaScript plugin should be able to handle both relative and absolute paths in LCOV files. However, it seems that your setup is incorrect. Your LCOV file refers to file paths in a given directory:

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

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

And based on the logs of your analysis, it seems that your analysis is run in another directory:

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

也许您在一台机器上生成了 LCOV 文件并在另一台机器上运行分析...最后,SonarQube 无法将 LCOV 文件中包含的路径与被分析的文件匹配.

Maybe you generated the LCOV file on one machine and run the analysis on another... In the end, SonarQube can't match the paths contained in the LCOV file with the files which are analysed.

您应该:

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

这篇关于Sonarqube 默认覆盖范围为 0,来自具有绝对路径的 Karma Coverage LCOV 文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

js删除数组中指定元素的5种方法
在JavaScript中,我们有多种方法可以删除数组中的指定元素。以下给出了5种常见的方法并提供了相应的代码示例: 1.使用splice()方法: let array = [0, 1, 2, 3, 4, 5];let index = array.indexOf(2);if (index -1) { array.splice(index, 1);}// array = [0,...
2024-11-22 前端开发问题
182

JavaScript小数运算出现多位的解决办法
在开发JS过程中,会经常遇到两个小数相运算的情况,但是运算结果却与预期不同,调试一下发现计算结果竟然有那么长一串尾巴。如下图所示: 产生原因: JavaScript对小数运算会先转成二进制,运算完毕再转回十进制,过程中会有丢失,不过不是所有的小数间运算会...
2024-10-18 前端开发问题
301

JavaScript(js)文件字符串中丢失"\"斜线的解决方法
问题描述: 在javascript中引用js代码,然后导致反斜杠丢失,发现字符串中的所有\信息丢失。比如在js中引用input type=text onkeyup=value=value.replace(/[^\d]/g,) ,结果导致正则表达式中的\丢失。 问题原因: 该字符串含有\,javascript对字符串进行了转...
2024-10-17 前端开发问题
437

layui中table列表 增加属性 edit="date",不生效怎么办?
如果你想在 layui 的 table 列表中增加 edit=date 属性但不生效,可能是以下问题导致的: 1. 缺少日期组件的初始化 如果想在表格中使用日期组件,需要在页面中引入 layui 的日期组件,并初始化: script type="text/javascript" src="/layui/layui.js"/scrip...
2024-06-11 前端开发问题
455

Rails/Javascript:如何将 rails 变量注入(非常)简单的 javascript
Rails/Javascript: How to inject rails variables into (very) simple javascript(Rails/Javascript:如何将 rails 变量注入(非常)简单的 javascript)...
2024-04-20 前端开发问题
5

CoffeeScript 总是以匿名函数返回
CoffeeScript always returns in anonymous function(CoffeeScript 总是以匿名函数返回)...
2024-04-20 前端开发问题
13