我已经将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开头的行:(参见LCOVParser).
因此,LCOV HTML报告(由伊斯坦布尔制作)使我在相同数据上的代码覆盖率高于Sonar.
有没有办法改变生成的lcov.info的格式?
如果我查看Istanbul code,我可以想象不同标签的含义:
> 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