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

Есть ли способ сосредоточить отчеты по охвату кода lcov только для одного или двух каталогов?

Недавно я начал использовать lcov для визуализации моего покрытия кода. Это отличный инструмент.

Одна вещь, которую я замечаю, заключается в том, что она генерирует отчеты о покрытии кода для всех файлов, которые я использую, включая те, которые меня не интересуют. Например, это даст мне отчеты о покрытии кода для boost и mysql ++ файлы.

Есть ли простой способ заставить lcov генерировать отчеты о покрытиях для определенных файлов?

Я попытался использовать параметр -k, например:

/usr/bin/lcov -q -c -i -b . -d .obj -k src/ -k include/ -o app_base.info

{run unit tests now}

/usr/bin/lcov -q -c -b . -d .obj -k src/ -k include/ -o app_test.info
/usr/bin/lcov -q -a app_base.info -a app_test.info -o app_total.info
/usr/bin/genhtml -q -o lcov_output_directory app_total.info

(означает, что мне нужны только файлы покрытия для каталогов "include" и "src".)

Однако это не работает. Отчет по-прежнему показывает мне все посторонние файлы. Любые предложения очень ценятся. Спасибо!

4b9b3361

Ответ 1

lcov поддерживает аргумент командной строки --remove, чтобы делать именно то, о чем вы просите.

Ответ 2

Я использовал флаг --directory --no-external вместе с флагом --directory чтобы исключить ненужные файлы.

Определение внешнего от человека:

Внешние исходные файлы - это файлы, которые не находятся ни в одном из каталогов, указанных в --directory или --base-directory.

Итак, моя команда выглядела так:

$ lcov  --directory src -c -o report.info --no-external
Capturing coverage data from src
Found gcov version: 4.2.1
Scanning src for .gcda files ...
Found 4 data files in src
Processing src/C####.gcda
  ignoring data for external file /usr/include/c++/4.2.1/bits/allocator.h

Ответ 3

Возможным подходом является ограничение того, какие файлы скомпилированы с помощью флагов покрытия (-fprofile-arcs -ftest-coverage). Если вы не хотите, чтобы ваша файловая система создавала выборочную информацию о том, какие файлы создаются с помощью тестового инструментария, для вас может работать следующий трюк:

  • Создайте приложение без инструментов.
  • Удалите файлы .o для источника, который вы хотите использовать.
  • Включите оборудование и перестройте. Только файлы удаленных объектов будут перестроены с помощью инструментария.
  • Запустить lcov

Это должно привести только к целевым областям, испускающим артефакты gcov, которые вслепую потребляются сценариями lcov.