Redrock Postgres 搜索 英文
版本: 9.3 / 9.4 / 9.5 / 9.6 / 10 / 11 / 12 / 13 / 14 / 15 / 16 / 17

31.5. 测试覆盖率检查 #

31.5.1. 用 Autoconf 和 Make 进行覆盖率检查
31.5.2. 用 Meson 进行覆盖率检查

PostgreSQL 源代码可以编译带有覆盖率测试检测,以便检查代码的哪些部分由回归测试或与代码共同运行的任何其他测试套件覆盖。当前在编译时支持 GCC,并且需要 gcovlcov 包。

31.5.1. 带有 Autoconf 和 Make 的覆盖 #

典型的流程如下

./configure --enable-coverage ... OTHER OPTIONS ...
make
make check # or other test suite
make coverage-html

然后将你的 HTML 浏览器指向 coverage/index.html

如果缺少 lcov 或更喜欢文本输出而不是 HTML 报告,则可以运行

make coverage

而不是 make coverage-html,它将为每个与测试相关的源文件生成 .gcov 输出文件。(make coveragemake coverage-html 会互相覆盖文件,所以混合使用可能会令人困惑。)

在生成覆盖率报告之前,你可以运行多个不同的测试;执行计数将会累积。如果你想在测试运行之间重置执行计数,请运行

make coverage-clean

如果你只需对代码树的一部分进行覆盖率报告,则可以在子目录中运行 make coverage-htmlmake 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

在生成覆盖率报告之前,你可以运行多个不同的测试;执行计数将会累积。