2024年9月26日: PostgreSQL 17 发布!
支持版本:当前 (17) / 16 / 15 / 14 / 13 / 12
开发版本:devel
不支持的版本:11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4

31.5. 测试覆盖率检查 #

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

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

提交更正

如果您在文档中看到任何不正确的内容,与您对特定功能的体验不符,或者需要进一步澄清,请使用 此表单 报告文档问题。