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

Rom*_*las 38 javascript lcov karma-runner sonarqube karma-coverage

我已经将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'
    }
  ]
},
Run Code Online (Sandbox Code Playgroud)

我的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
Run Code Online (Sandbox Code Playgroud)

不幸的是,在Sonarqube JavaScript的插件,仅考虑与启动线SF:,DA:BRDA:(CF LCOVParser).

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

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


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

  • BRF,BRH,BRDA分支机构.
  • FN,FNF,FNH,FNDA是用于功能.
  • LN,LF,LH线.
  • *F是总数,*H而是涵盖的信息.

伊斯坦布尔和声纳覆盖范围之间的差异似乎是由于后者完全忽略了功能和分支的覆盖范围.

有什么想法解决这个问题?

Dor*_*ian 4

您可以运行一个执行以下操作的脚本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
Run Code Online (Sandbox Code Playgroud)