Go/goコマンド/tool/covdata/intersect
表示
go tool covdata intersect
[編集]何をするコマンドか
[編集]dir1 と dir2 の両方でカバーされている部分だけを抽出したカバレッジデータを生成します。
dir1 ∩ dir2 = outdir
基本的な使い方
[編集]mkdir -p ./result go tool covdata intersect -i=dir1,dir2 -o=./result
フラグ解説
[編集]-i:入力ディレクトリ(必須)
[編集]go tool covdata intersect -i=./unit,./integration -o=./result
カンマ区切りでちょうど2つ指定します。subtract と異なり順序は関係ありません。
-o:出力ディレクトリ(必須)
[編集]mkdir -p ./result go tool covdata intersect -i=./unit,./integration -o=./result
事前にディレクトリを作成しておく必要があります。
-pkg:対象パッケージの絞り込み
[編集]go tool covdata intersect -i=./unit,./integration -o=./result \ -pkg=github.com/myorg/myapp/pkg/...
使用例
[編集]ユニットテストと統合テストの両方でカバーされている箇所を確認
[編集]mkdir -p ./both go tool covdata intersect -i=./unit,./integration -o=./both # 両方でカバーされている関数を確認 go tool covdata func -i=./both
両方のテストで通る箇所はテストが重複している可能性があり、ユニットテストだけで十分かもしれません。
重複カバレッジの割合を確認
[編集]# 全体のカバレッジ go tool covdata percent -i=./unit,./integration # 両方で重複してカバーされている割合 go tool covdata percent -i=./both
unit: ████████░░░░ integration: ░░░░████████ merge: ████████████ (どちらかがカバー) intersect: ░░░░████░░░░ (両方がカバー) subtract (unit-integ):████░░░░░░░░ (unit のみカバー) subtract (integ-unit):░░░░░░░░████ (integration のみカバー)
| コマンド | 操作 | 用途 |
|---|---|---|
merge
|
dir1 ∪ dir2
|
全カバレッジの合算 |
intersect
|
dir1 ∩ dir2
|
重複カバレッジの特定 |
subtract
|
dir1 - dir2
|
片方にしかないカバレッジの特定 |
まとめ
[編集]| フラグ | 用途 |
|---|---|
-i
|
入力ディレクトリ(必須・2つ指定・順序不問) |
-o
|
出力ディレクトリ(必須) |
-pkg
|
対象パッケージの絞り込み |
-v
|
詳細ログレベル |
subtract と組み合わせることでテストスイートの役割分担を可視化できます。intersect で重複を把握し、subtract で各テストスイート固有のカバレッジを把握することで、テスト戦略の最適化に役立てられます。