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中文網其他相關文章!