Подтвердить что ты не робот

Как изменить формат отчета LCOV, выполненного кармой?

Я настроил 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

К сожалению, плагин JavaScript Sonarqube рассматривает только строки, начинающиеся с SF:, DA: или BRDA: (cf LCOVParser).

В связи с этим, HTML-отчет LCOV (сделанный Стамбулом) дает мне более высокий охват кода, чем Sonar, по тем же данным.

Есть ли способ изменить формат созданного lcov.info?


Если я смотрю код Стамбула, я могу представить себе значение разных меток:

  • BRF, BRH, BRDA для ветвей.
  • FN, FNF, FNH, FNDA предназначены для функций.
  • LN, LF, LH для строк.
  • *F - это сумма, тогда как *H - это информация, охватываемая.

Разница между охватом Стамбула и Сонара, по-видимому, связана с тем, что последний полностью игнорирует покрытие функций и веток.

Любая идея решить это?

4b9b3361

Ответ 1

Вы можете запустить script, который делает: 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