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 de JavaScript de Sonarqube solo considera las líneas que comienzan con SF: DA: o BRDA: (cf LCOVParser ).
Debido a eso, el informe HTML de LCOV (realizado por Estambul) me brinda una cobertura de código más alta que Sonar en los mismos datos.
¿Hay alguna forma de cambiar el formato del lcov.info generado?
Si miro en 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 a que este último ignora por completo la cobertura de Funciones y Ramas.
¿Alguna idea para solucionar eso?
Puede ejecutar un script que lo haga: 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