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