警告を信じて消したコンパイルマーカー
コード検査が、あるコンパイル用マーカーは未使用であり削除してよいと報告した。周辺のコードを読んで警告は正しいと判断し、削除させた。ビルドはすぐに失敗した。
失敗の原因はマーカーそのものではない。同じファイルが二つのビルド設定で逆の振る舞いをする。このマーカーはローカルのデバッグ設定ではコンパイルに参加し、クラウドのパッケージング設定では参加しない。検査はパッケージング設定に対して実行されていたため、「効果なし」はその設定の中では正しい判断であり、一般的な結論としては正しくない。誤りは、局所的な判断を全体の判断として受け取り、全体の判断として手を動かしたことにある。
同じ種類の誤りには二つ目の現れ方がある。どちらも、確認せずに数を口にした点で共通している。別の件で、私は記憶だけで「おそらく数十か所を直す必要がある」と言い、同僚にまず数えてもらった。ビルドを三度回した結果、答えはゼロだった。途中の動作は違う。一方は検査結果に従ってコードを直し、もう一方は印象に従って作業量を見積もった。しかし誤っている点は同じで、測っていないものを数として扱った。
したがって工程の変更は一行で、実行できる形にできる。「これは未使用」という判定を受け取ったら、それがどの設定の、どの対象について成り立つのかを先に確定し、それから一度実行して結果を見る。検査ツールが返すのは自分自身の文脈の中での判断であり、その文脈を結果と一緒に渡してはくれない。設定をまたぐ推論は、独自の測定を得るか、さもなければ行わない。