javascript - coverage - ¿Cómo cambiar el formato del informe LCOV ejecutado por Karma?
sonarqube javascript (1)
Configuré Karma para informar la cobertura de mi código JavaScript. Aquí está la parte de la configuración en el archivo karma.conf.js
:
coverageReporter: {
reporters: [
{
type: ''html'',
dir: ''build/karma/coverage''
},
{
type: ''lcov'',
dir: ''build/karma/coverage'',
subdir: ''.''
},
{
type: ''cobertura'',
dir: ''build/karma/coverage''
}
]
},
Mi archivo lcov.info
tiene el siguiente formato:
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
Desafortunadamente, el complemento Sonarqube JavaScript solo considera las líneas que comienzan con SF:
DA:
o BRDA:
(cf LCOVParser ).
Debido a eso, el informe HTML LCOV (hecho por Estambul) me da una cobertura de código más alta que Sonar en los mismos datos.
¿Hay alguna manera de cambiar el formato de lcov.info
generado?
Si miro el código de Estambul , puedo imaginar el significado de las diferentes etiquetas:
-
BRF
,BRH
,BRDA
son para sucursales . -
FN
,FNF
,FNH
,FNDA
son para funciones . -
LN
,LF
,LH
son para líneas . -
*F
es el total, mientras que*H
es la información cubierta.
La diferencia entre la cobertura de Estambul y Sonar parece deberse al hecho de que este último ignora por completo la cobertura de Funciones y Sucursales.
Alguna idea para resolver eso?
Podría ejecutar un script que sí lo haga: cat lcov.info | egrep "^(SF|DA|BRDA):" > lcov.info.new; mv lcov.info.new lcov.info
cat lcov.info | egrep "^(SF|DA|BRDA):" > lcov.info.new; mv lcov.info.new lcov.info
cat lcov.info | egrep "^(SF|DA|BRDA):" > lcov.info.new; mv lcov.info.new lcov.info
.
Con eso obtengo:
SF:./app/scripts/app.js
DA:2,1
DA:20,1
DA:29,0
DA:34,0