Покрытие кода с dgcov
Инструмент dgcov помогает проверить покрытие нового кода. Скрипт dgcov.pl является частью фреймворка mariadb-test (и любых пакетов, включающих mariadb-test).
Обзор
Программа dgcov запускает gcov для анализа покрытия кода, агрегирует данные о покрытии и (по желанию) отображает покрытие только для строк, измененных в коммите(ах). Коммиты задаются в формате git diff.
Если коммиты не указаны, по умолчанию используется работа со всеми несохраненными изменениями, если таковые имеются, в противном случае — с последним коммитом (то есть с git diff HEAD или git diff HEAD^).
Рекомендуется, чтобы разработчик запускал dgcov для своего нового кода перед его отправкой в репозиторий MariaDB.
Использование
./dgcov.pl --help ./dgcov.pl [options] [<commit> [<commit>]]
Параметры и переменные
| Короткая опция | Полная опция | Описание |
|---|---|---|
-h |
--help |
Вывести справку и выйти |
-v |
--verbose |
Показать выполняемые команды. |
-p |
--purge |
Удалить всю информацию о покрытии тестов, чтобы подготовиться к новому тесту покрытия. |
-o |
--only-gcov |
Остановить после выполнения gcov, не запускать git |
-s |
--skip-gcov |
Не запускать gcov, предполагается, что файлы .gcov уже созданы |
-g |
--generate |
Создать файлы .dgcov для всех исходных файлов |
Подготовка кода для dgcov
Перед запуском этого инструмента MariaDB необходимо скомпилировать с
cmake -DENABLE_GCOV=ON
и необходимо запустить тестовую среду. dgcov будет отображать покрытие для всех строк, измененных в указанных коммитах.
Вывод
Файлы вывода .dgcov имеют стандартный формат gcov: строки, не покрытые, имеют префикс #####, строки без сгенерированного кода имеют префикс -, а другие строки имеют префикс с числом их выполнений. Для получения дополнительной информации см. info gcov.
Покрытие, подобное патчу, для коммитов использует формат gcov (как указано выше) для строк, измененных в этих коммитах, и вообще никакого префикса для строк, которые не были изменены.
Примеры
Проверка покрытия для всех неотправленных коммитов:
dgcov.pl @{u} HEAD
Проверка покрытия для всех несохраненных изменений:
dgcov.pl HEAD
Проверка покрытия для конкретного коммита 1234567:
dgcov.pl 1234567^ 1234567
mariadb-test-run может автоматически вызвать dgcov:
./mtr --gcov
В последнем случае покрытие для несохраненных изменений (или последнего коммита) не будет выведено в stdout, а будет помещено в файл var/last_changes.dgcov.
Ограничения
Обратите внимание, что для возможности запуска gcov с фреймворком mariadb-test требуется версия gcc 4.8 или новее.
Ссылки
- dgcov был создан Кристианом Нильсеном и был впервые объявлен здесь.
- dgcov был повторно реализован для агрегирования данных и работы с git и cmake Сергеем Голубчиком.
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/dgcov/