2015-03-02 2 views
36

Я настроил Карму, чтобы сообщить о покрытии моего кода 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 является покрытой информацией.

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

Любая идея решить эту проблему?

+0

Рассматривали ли вы с помощью карма-sonarqube-блок-репортер: https://www.npmjs.com/package/karma-sonarqube-unit-reporter – DevDig

+0

Мы запускали в это также, а затем отбросил плагин javascript для непосредственного запуска скриптов. https://github.com/carsdotcom/gulp-sonar Это хороший плагин для работы в вашем gulpfile. Это может не сработать для каждой ситуации, но решить эту проблему для нас. – devilfart

+0

У нас была аналогичная проблема, когда сонар ожидал абсолютного пути к файлу для расчета покрытия. Наше решение заключалось в том, чтобы добавить задачу сборки, которая изменила lcov.info, чтобы добавить префикс абсолютного пути в строки SF: – claya

ответ

2

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