Я настроил Карму, чтобы сообщить о покрытии моего кода JavaScript. Вот часть конфигурации в файле karma.conf.js
:Как изменить формат отчета LCOV, выполненного кармой?
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 (сделанный Стамбулом) дает мне более высокий охват кода, чем Sonar, по тем же данным.
Есть ли способ изменить формат генерируемого lcov.info
?
Если я смотрю в Istanbul code, я могу представить себе значение различных меток:
BRF
,BRH
,BRDA
являются для ветвей.FN
,FNF
,FNH
,FNDA
для функции.LN
,LF
,LH
для линии.*F
является общей суммой, а*H
является покрытой информацией.
Разница между покрытием в Стамбуле и сонаре, по-видимому, обусловлена тем, что последний полностью игнорирует покрытие функций и филиалов.
Любая идея решить эту проблему?
Рассматривали ли вы с помощью карма-sonarqube-блок-репортер: https://www.npmjs.com/package/karma-sonarqube-unit-reporter – DevDig
Мы запускали в это также, а затем отбросил плагин javascript для непосредственного запуска скриптов. https://github.com/carsdotcom/gulp-sonar Это хороший плагин для работы в вашем gulpfile. Это может не сработать для каждой ситуации, но решить эту проблему для нас. – devilfart
У нас была аналогичная проблема, когда сонар ожидал абсолютного пути к файлу для расчета покрытия. Наше решение заключалось в том, чтобы добавить задачу сборки, которая изменила lcov.info, чтобы добавить префикс абсолютного пути в строки SF: – claya