2025年9月25日: PostgreSQL 18 釋出!
支援的版本: 當前 (18) / 17 / 16 / 15 / 14 / 13
開發版本: devel
不支援的版本: 12 / 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

您可以在生成覆蓋率報告之前執行多個不同的測試;執行計數將累加。

提交更正

如果您在文件中發現任何不正確、與您對特定功能的實際體驗不符或需要進一步澄清的內容,請使用 此表單 報告文件問題。