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

StackOverflow https://stackoverflow.com/questions/837639

  •  10-07-2019
  •  | 
  •  

Вопрос

Недавно я начал использовать 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 поддерживает аргумент командной строки - удалить делать именно то, что вы просите.

Другие советы

Я использовал флаг - 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).Если вы не хотите, чтобы ваша файловая система make избирательно определяла, какие файлы собираются с помощью инструментов тестирования, вам может подойти следующий прием:

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top