Ответ 1
lcov поддерживает аргумент командной строки --remove, чтобы делать именно то, о чем вы просите.
Недавно я начал использовать 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".)
Однако это не работает. Отчет по-прежнему показывает мне все посторонние файлы. Любые предложения очень ценятся. Спасибо!
lcov поддерживает аргумент командной строки --remove, чтобы делать именно то, о чем вы просите.
Я использовал флаг --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
Возможным подходом является ограничение того, какие файлы скомпилированы с помощью флагов покрытия (-fprofile-arcs -ftest-coverage). Если вы не хотите, чтобы ваша файловая система создавала выборочную информацию о том, какие файлы создаются с помощью тестового инструментария, для вас может работать следующий трюк:
Это должно привести только к целевым областям, испускающим артефакты gcov, которые вслепую потребляются сценариями lcov.