支援的版本:目前 (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

您可以在製作覆蓋率報告之前運行幾個不同的測試;執行計數將會累積。

提交更正

如果您在文件中發現任何不正確、與您使用特定功能的經驗不符或需要進一步澄清之處,請使用此表單回報文件問題。