PostgreSQL 源代码可以使用覆盖测试工具进行编译,这样就可以检查回归测试或与代码一起运行的任何其他测试套件覆盖了代码的哪些部分。目前在使用 GCC 编译时支持此功能,并且需要 gcov
和 lcov
包。
典型的操作流程如下所示
./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 coverage
和 make coverage-html
会互相覆盖文件,因此混合使用它们可能会造成混淆。)
在生成覆盖报告之前,你可以运行多个不同的测试;执行计数会累积。如果你想在测试运行之间重置执行计数,请运行
make coverage-clean
如果你只想针对代码树的一部分生成覆盖报告,可以在子目录中运行 make coverage-html
或 make coverage
命令。
完成后,使用 make distclean
进行清理。
典型的操作流程如下所示
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
。
在生成覆盖报告之前,你可以运行多个不同的测试;执行计数会累积。