PostgreSQL 源代码可以使用覆盖测试指令编译,因此可以检查哪些部分的代码被回归测试或任何其他测试套件所覆盖。
当前使用 GCC 编译时支持该特性,并且它需要gcov
和lcov
程序。
一个典型的工作流程看起来是:
./configure --enable-coverage ... OTHER OPTIONS ... make make check # 或其他测试套件 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
清理。