31.5. Определение покрытия кода тестами #
Исходный код PostgreSQL может быть скомпилирован с инструментарием определения покрытия, чтобы узнать, какие части кода покрываются регрессионными тестами или другим пакетом тестов, выполняемых в дереве кода. В настоящее время эта возможность поддерживается в случае использования компилятора GCC и требует наличия пакетов gcov
и lcov
.
31.5.1. Покрытие с Autoconf и Make #
Типичный рабочий процесс выглядит так:
./configure --enable-coverage ... OTHER OPTIONS ... make make check # или другой пакет тестов make coverage-html
Затем откройте в своём HTML-браузере страницу coverage/index.html
.
Если у вас нет программы lcov
или вы предпочитаете HTML-отчёту текстовый формат, вы можете выполнить
make coverage
вместо make coverage-html
и получить выходные файлы .gcov
для каждого исходного файла, относящегося к тесту. (Команды make coverage
и make coverage-html
перезаписывают файлы друг друга, поэтому при одновременном их использовании может возникнуть путаница.)
Вы можете запустить несколько разных тестов перед проверкой покрытия — счётчики выполнений будут накапливать значения. Чтобы счётчики выполнений сбрасывались между тестами, запустите:
make coverage-clean
Если вам нужно собрать покрытие только для части дерева исходного кода, вы можете запустить команду make coverage-html
или make coverage
в подкаталоге.
После завершения тестирования выполните очистку с помощью make distclean
.
31.5.2. Покрытие с Meson #
Типичный рабочий процесс выглядит так:
meson setup -Db_coverage=true ... OTHER OPTIONS ... builddir/ meson compile -C builddir/ meson test -C builddir/ cd builddir/ ninja coverage-html
Затем откройте в своём HTML-браузере страницу /meson-logs/coveragereport/index.html
.
Вы можете запустить несколько разных тестов перед проверкой покрытия — счётчики выполнений будут накапливать значения.