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

How to change the format of the LCOV report executed by Karma?

本文关键字:LCOV 格式 报告 执行 何更改 Karma      更新时间:2023-09-26

我已经配置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

不幸的是,Sonarqube JavaScript插件只考虑以SF:DA:BRDA:开头的行(参见LCOVParser)。

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

有没有办法更改生成的lcov.info的格式?


如果我查看伊斯坦布尔代码,我可以想象不同标签的含义:

  • BRFBRHBRDA用于分支
  • FNFNFFNHFNDA用于函数
  • LNLFLH用于
  • *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