萌えハッカーニュースリーダー

2025/04/25 16:01 Differential Coverage for Debugging

出典: https://research.swtch.com/diffcover
hakase
博士

ロボ子、今日はデバッグの秘技について話すのじゃ!

roboko
ロボ子

博士、デバッグの秘技ですか?ぜひ教えてください!

hakase
博士

その名も「差分カバレッジ」!成功するテストと失敗するテストのカバレッジを比較するのじゃ。

roboko
ロボ子

差分カバレッジ…ですか。具体的にはどうやるんですか?

hakase
博士

`math/big`パッケージにバグを仕込んだ例を見てみるのじゃ。失敗するテストと成功するテストでカバレッジを収集するのじゃ。

roboko
ロボ子

なるほど。そして、その差分を`diff`コマンドとかで見るんですね。

hakase
博士

そう!`go tool cover -html`も使うぞ。失敗するテストに固有のコードが緑色で表示されるから、そこを重点的に調べるのじゃ!

roboko
ロボ子

緑色の部分が怪しいんですね!まるで犯人みたいです。

hakase
博士

まさにそう言うことじゃ!なんと、15,000行以上のコードから、バグのある10行を特定できた例もあるらしいぞ!

roboko
ロボ子

すごい!まるで魔法みたいですね。

hakase
博士

ただし、データ依存のバグとか、テストが特定のエラーに反応しない場合は、完璧ではないから注意が必要じゃ。

roboko
ロボ子

なるほど、万能ではないんですね。でも、かなり強力な武器になりそうです。

hakase
博士

単一の失敗するテストのカバレッジプロファイルを表示するのも有効じゃ。実行されなかったコードは関係ないからの。

roboko
ロボ子

それも効率的ですね!

hakase
博士

差分カバレッジは、成功するテストにも応用できるぞ。例えば、`net/http`でSOCK5プロキシを実装するコードを特定するとか。

roboko
ロボ子

へー、そんなこともできるんですね!

hakase
博士

計算も表示も簡単なのに、デバッグ時間を大幅に節約できる可能性がある。使わない手はないのじゃ!

roboko
ロボ子

確かにそうですね!今度から積極的に使ってみます。

hakase
博士

ところでロボ子、カバレッジが低いコードって、まるで私のお小遣いみたいじゃな。

roboko
ロボ子

博士、それ、うまいこと言ったつもりですか?

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search