首頁 >後端開發 >Golang >如何在 Go 中產生全面的程式碼覆蓋率報告?

如何在 Go 中產生全面的程式碼覆蓋率報告?

Susan Sarandon
Susan Sarandon原創
2024-12-27 19:11:09821瀏覽

How Can I Generate Comprehensive Code Coverage Reports in Go?

Go 中的全面程式碼覆蓋率報告

在 Go 開發中,使用 -cover 標誌取得單一包覆蓋率報告非常簡單。然而,獲得跨多個套件的覆蓋率的整體視圖可能具有挑戰性。

為了解決這個問題,Go 1.10 在程式碼覆蓋率報告方面引入了重大改進。 -coverpkg 標誌現在接受以逗號分隔的模式清單來匹配套件依賴項,從而允許您針對特定區域進行覆蓋率分析。

要產生全面的覆蓋率報告,您現在可以執行以下命令:

go test -v -coverpkg=./... -coverprofile=profile.cov ./...
go tool cover -func profile.cov

此方法將收集與./... 模式匹配的所有套件的覆蓋率數據,並產生包含詳細覆蓋率的綜合報告資訊。

舊版 Go 版本的遺留解決方案

在 Go 1.10 之前,取得全面的覆蓋率報告需要不同的方法。在GitHub 上的gosweep 專案中可以找到一種用bash 實現的解決方案:

#!/bin/bash
set -e

echo 'mode: count' > profile.cov

for dir in $(find . -maxdepth 10 -not -path './.git*' -not -path '*/_*' -type d);
do
if ls $dir/*.go > /dev/null; then
    go test -short -covermode=count -coverprofile=$dir/profile.tmp $dir
    if [ -f $dir/profile.tmp ]
    then
        cat $dir/profile.tmp | tail -n +2 >> profile.cov
        rm $dir/profile.tmp
    fi
fi
done

go tool cover -func profile.cov

此腳本遞歸搜尋包含Go 套件的目錄,在啟用覆蓋率的情況下執行go test,並聚合各個覆蓋率報告到單一profile.cov 檔案。產生覆蓋率資料後,您可以使用 go tool cover -func profile.cov 顯示詳細報告。

以上是如何在 Go 中產生全面的程式碼覆蓋率報告?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn