33.5. 测试覆盖检查

PostgreSQL 源代码可以使用覆盖测试指令编译,因此可以检查哪些部分的代码被回归测试或任何其他测试套件所覆盖。 当前使用 GCC 编译时支持该特性,并且它需要gcovlcov程序。

一个典型的工作流程看起来是:

./configure --enable-coverage ... OTHER OPTIONS ...
make
make check # 或其他测试套件
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 清理。