Покрытие Sonarqube по умолчанию на 0 из файла Karma Coverage LCOV с абсолютными путями.

Сонар не получает информацию о покрытии для моего проекта, если в моем lcov-файле пути являются абсолютными. Для файла:

TN:
SF:/mnt/vg01-data01/jenkins/<jenkins.myhost.com>/jenkins_home/workspace/<job1>/src/app.js
FN:,(anonymous_0)
FN:,(anonymous_1)
FNF:2
FNH:2
FNDA:1,(anonymous_0)
FNDA:2,(anonymous_1)
DA:3,1
DA:4,1
DA:6,1
DA:7,1
DA:8,1
DA:9,1
DA:11,1
DA:18,1
DA:19,1
DA:22,2
DA:27,1
LF:11
LH:11
BRF:0
BRH:0
end_of_record
....

Я получаю следующие предупреждения:

...
05:06:27.565 INFO: Analysing [/srv/jenkins/<jenkins.myhost.com>/jenkins_home/workspace/<job1>/coverage/lcov.info]
05:06:27.574 DEBUG: Default value of zero will be saved for file: src/app.js
05:06:27.574 DEBUG: Because was not present in LCOV report.
05:06:27.578 DEBUG: Default value of zero will be saved for file: src/app.spec.js
05:06:27.578 DEBUG: Because was not present in LCOV report.
05:06:27.579 DEBUG: Default value of zero will be saved for file: src/js/form/form.ctrl.js
05:06:27.579 DEBUG: Because was not present in LCOV report.
05:06:27.580 DEBUG: Default value of zero will be saved for file: src/js/form/form.module.js
05:06:27.580 DEBUG: Because was not present in LCOV report.
05:06:27.581 DEBUG: Default value of zero will be saved for file: src/js/success/success.ctrl.js

...

Однако по умолчанию karma (и istambul) генерируют файл с абсолютными путями.

Если я изменю пути, чтобы сделать их относительными, sonarqube правильно сообщит о покрытии. Тем не менее, я должен убедиться, что сценарий «lcov patch» всегда запускается перед отправкой сообщения эхолоту.

Поддерживает ли сонар абсолютные пути? Что делают другие команды для решения этой проблемы? Вот версии, которые я использую:

Обновление: я заменил файл и журнал, которые я вижу, точными из заданий (мне все равно нужно изменить имя хоста и задания по соображениям безопасности).

Обновление, март 2016 г.: я отправил запрос на включение в Стамбул, чтобы разрешить создание файла lcov с относительными путями. Я ожидаю, что это решит эту проблему https://github.com/gotwarlost/istanbul/pull/771


person miguelr    schedule 29.11.2016    source источник


Ответы (1)


Плагин SonarQube JavaScript должен уметь обрабатывать как относительные, так и абсолютные пути в файлах LCOV. Однако кажется, что ваша установка неверна. Ваш файл LCOV ссылается на пути к файлам в данном каталоге:

SF:/home/mrincon/work/git/promoter-app-client/src/app.js

И, судя по журналам вашего анализа, кажется, что ваш анализ выполняется в другом каталоге:

Analysing [/srv/jenkins/master/jenkins_home/workspace/job1/coverage/lcov.info]

Возможно, вы сгенерировали файл LCOV на одной машине и запустили анализ на другой ... В конце концов, SonarQube не может сопоставить пути, содержащиеся в файле LCOV, с анализируемыми файлами.

Вам следует либо:

  • сгенерировать отчет LCOV и запустить анализ SonarQube из того же каталога,
  • или пусть ваш файл LCOV содержит только относительные пути.
person Pierre-Yves    schedule 29.11.2016
comment
Привет, Пьер, я обновил файлы для актуальных из моей работы, рабочего пространства и журнала (я все еще должен скрыть хост и имя работы). Вы окончательно указываете мне правильное направление, поскольку пути не совпадают! - person miguelr; 29.11.2016
comment
Пьер, как сделать так, чтобы в файле LCOV выводились только относительные пути? Похоже, это уже упоминалось в github.com/gotwarlost/istanbul/issues/104, но никогда не закрывался. Я отправил PR для этого, хотя github.com/gotwarlost/istanbul/pull/771 - person miguelr; 06.03.2017