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.

Вы можете запустить несколько разных тестов перед проверкой покрытия — счётчики выполнений будут накапливать значения.