Javascript 如何更改Karma执行的LCOV报告的格式?

Javascript 如何更改Karma执行的LCOV报告的格式?,javascript,sonarqube,karma-runner,lcov,karma-coverage,Javascript,Sonarqube,Karma Runner,Lcov,Karma Coverage,我已经将Karma配置为报告JavaScript代码的覆盖率。以下是karma.conf.js文件中的配置部分: coverageReporter: { reporters: [ { type: 'html', dir: 'build/karma/coverage' }, { type: 'lcov', dir: 'build/karma/coverage', subdir: '.' }, {

我已经将Karma配置为报告JavaScript代码的覆盖率。以下是
karma.conf.js
文件中的配置部分:

coverageReporter: {
  reporters: [
    {
      type: 'html',
      dir: 'build/karma/coverage'
    },
    {
      type: 'lcov',
      dir: 'build/karma/coverage',
      subdir: '.'
    },
    {
      type: 'cobertura',
      dir: 'build/karma/coverage'
    }
  ]
},
我的
lcov.info
文件的格式如下:

TN:
SF:./app/scripts/app.js
FN:16,(anonymous_1)
FN:26,(anonymous_2)
FNF:2
FNH:1
FNDA:1,(anonymous_1)
FNDA:0,(anonymous_2)
DA:2,1
DA:20,1
DA:29,0
DA:34,0
LF:4
LH:2
BRF:0
BRH:0
end_of_record
不幸的是,只考虑以
SF:
DA:
BRDA:
(cf)开头的行

因此,LCOV HTML报告(由伊斯坦布尔制作)在相同数据上比Sonar提供了更高的代码覆盖率

是否有办法更改生成的
lcov.info
的格式


如果我往里看,我可以想象不同标签的含义:

  • BRF
    BRH
    BRDA
    用于分支机构
  • FN
    FNF
    FNH
    FNDA
    用于功能
  • LN
    LF
    LH
    用于
  • *F
    是总数,而
    *H
    是涵盖的信息
伊斯坦布尔和声纳覆盖范围之间的差异似乎是因为后者完全忽略了功能和分支覆盖


有没有办法解决这个问题?

你可以运行这样一个脚本:
cat lcov.info | egrep“^(SF | DA | BRDA):>lcov.info.new;mv lcov.info.new lcov.info

由此我得到:

SF:./app/scripts/app.js
DA:2,1
DA:20,1
DA:29,0
DA:34,0

您是否考虑过使用karma sonarqube单元记者:我们也遇到了这个问题,然后放弃了直接运行脚本的javascript插件。是一个很好的插件工作到您的gulpfile。它可能不适用于所有情况,但为我们解决了这个问题。我们有一个类似的问题,声纳需要一个绝对文件路径来计算覆盖范围。我们的解决方法是添加一个构建任务,该任务修改了lcov.info,在SF:linesId上添加了绝对路径前缀。您能让它工作吗?我坚持使用lcov导入,无法解析文件路径,这里@claya解释道,如果您更新构建任务的详细信息,这将非常有用。所以我可以按照同样的方法来看看它是否有效。我们正在使用团队城市