我已经配置了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
不幸的是,the Sonarqube JavaScript plugin只考虑以
SF:
,DA:
或BRDA:
(cf LCOVParser)开头的行。因此,在相同数据上,LCOV HTML报告(由 Istanbul 尔制造)为我提供了比Sonar高的代码覆盖率。
有没有办法更改生成的
lcov.info
的格式?如果查看Istanbul code,我可以想象不同标签的含义:
BRF
,BRH
和BRDA
用于分支。 FN
,FNF
,FNH
和FNDA
用于函数。 LN
,LF
和LH
用于行。 *F
是总数,而*H
是涵盖的信息。 Istanbul和Sonar覆盖范围之间的差异似乎是由于后者完全忽略了功能和分支覆盖范围。
有解决的办法吗?
最佳答案
您可以运行一个脚本: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
关于javascript - 如何更改由 karma 执行的LCOV报告的格式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28806209/