次: , 前: Bug Criteria, 上: Bugs


28.10.2 バグの報告とは

バグがあると確信したら、それを報告すること、 しかも、役立つ形で報告することが重要です。 もっとも有用なのは、どのようなコマンドを打ち込んだかを、 Emacsを起動するシェルのコマンドから始めて 問題が起きるところまですべて正確に記述することです。

バグを報告するときもっとも重要なことは事実を報告することです。 仮説や口頭説明は、詳細な生データのかわりにはなりません。 事実を報告することは単純なはずなのに、 多くの人はかわりに説明をでっちあげてそれを報告したがります。 その説明がEmacsの実装方式の想像に基づいたものであるならば、 その説明はまったく役に立たないでしょう。 事実が欠けていたらバグに関する真の情報を得られません。

たとえば、ユーザーがとても大きなファイルを訪れるために C-x C-f /glorp/baz.ugh <RET>と打ち込んだら、 Emacsが`I feel pretty today'と表示したとしましょう。 もっともよいバグレポートは、まさにこの文のように報告することです。 すべての事実だけを報告できるからです。

問題はファイルの大きさにあると仮定して、 「大きなファイルを訪問したら、Emacsが`I feel pretty today'と表示した」 などと書いてはいけません。 これが『説明をでっちあげた』報告です。 問題はファイル名に`z'が含まれていたために生じたのかもしれないのです。 もしそうだとしたら、報告に基づいて適当な「大きなファイル」を訪問してみても、 そのファイル名に`z'が含まれていなければ何も悪いところが みつからないでしょう。 報告の文面からは、名前に`z'を含んだファイルを 試しに訪問してみるべきだとはわかりません。

あるいは、ファイルがちょうど25個の空白文字で始まっているために 問題が起きたのかもしれません。 ですから、報告に際しては、そのバグを再現させるのに必要なファイルがあれば、 それらのファイルの正確な内容も教えてください。 その問題は、たまたま、C-x C-aと打った直後にのみ 発生するのだとしたらどうでしょう? ですから、Emacsを起動してから問題に遭遇するまでに 打ち込んだものすべてを教えてほしいのです。

どの訪問コマンドを使っても同じように問題が発生すると知っている のでない限り、C-x C-fと打ったと報告するかわりに 「ファイルを訪問した」というのさえいけません。 同様に、「1行に3文字入っているとき」ではなく、 「<RET> A B C <RET> C-pと打ち込んだあとで」のように、 あなたがテキストを入れたやり方そのものを報告してください。

このように、バグを報告するときには、いかなる説明も推測しないでください。 問題を実際にデバッグして憶測ではない説明を報告してもらえるなら、 それは有益ですが、事実も含めてください。