質問

私は、誰かのコードをチェックするときに、警告を出さないというポリシーを強制することを好みます。一部の警告を削除するのが簡単ではない場合や、必要なサイクルやメモリなどが多すぎる場合があるため、表示される警告はすべて明示的に文書化する必要があります。

しかし、このポリシーにはマイナス面があり、それは潜在的に危険な方法で警告を削除することです。実際に使用される方法は、問題を解決するのではなく、問題を隠すことになります。

私が最も強く意識しているのは、バグを隠している可能性がある明示的なキャストです。

C(++) のコンパイラ警告を削除する潜在的に危険な方法で注意すべきものは他にありますか?

役に立ちましたか?

解決

const が正しいかどうかは、初心者にとっていくつかの問題を引き起こす可能性があります。

// following should have been declared as f(const int & x)
void f( int & x ) {
  ...
}

後で:

// n is only used to pass the parameter "4"
int n = 4;
// really wanted to say f(4)
f( n );

編集1: ある程度似たような流れで、すべてのメンバー変数を次のようにマークします。 可変, なぜなら、const の正しさが本当にすべきではないと判断した場合に、コードがそれらを変更することがよくあるからです。

編集2: 私が (おそらく Java プログラマから) 遭遇したもう 1 つの方法は、実際にスローできるかどうかに関係なく、関数に throw() 仕様を組み込むことです。

他のヒント

まあ、明確な方法があります - コードの部分のために特定の警告を無効ます:

#pragma warning( disable : 4507 34 )

編集:コメントで指摘したように、あなたが警告がOKであることを知っている場合に使用することが必要な場合があり、それは便利な機能ではありませんでした場合(にそれを置くべき理由がなかっただろう最初の場所で)。しかし、それはまた、あなたのコード内の警告を「無視」し、まだそれが元の質問が約だったものである、静かにコンパイルするために取得するための非常に簡単な方法です。

私はそれが微妙な問題だと思います。私の見解は、警告が意図されているものない/コードが正しいかどうかを確認するために徹底的にチェックしなければならないということです。しかし、多くの場合、警告を生成します正しいコードがあり、それらを排除しようとするだけで、コードを畳み込む以下の自然な方法で書き換えを強制します。

私は警告のカップルを生産し、正しいと固体のコードを持っていた以前のリリースで思い出す、と同僚は、この不満始めました。コードは非常にきれいだったし、それがintentedていたものでした。最後のコードは警告して生産を行ってきました。

また、別のコンパイラのバージョンが異なる警告が生成されますので、結果は、コンパイラの開発者の気分に依存したときに「警告なし」ポリシーを適用するために、より無意味になります。

私は、少なくとも一度はすべての警告を確認することがいかに重要であるかを強調したい。

ところで、私は組み込みシステム用のCおよびC ++での開発ます。

警告を生成するコードを(削除、または悪化)コメントアウト。確かに、警告が表示されなくなりますが、あなたはおそらく、あなたが意図し何をしないコードで終わるほんの少し以上です。

私はまた、無警告ルールを施行しますが、あなただけの安易に警告を削除することができないという権利です。コードが正しかったので、と正直に言うと、時々私はしばらくの間で警告を残してきました。あなたがビルドでダース以上の警告を持っていたら、人々がそれらに注意を払って停止するので、最終的に私は、何とかそれをクリーンアップします。

あなたが述べたことは、警告に固有の問題ではありません。私は、「私は、NULLチェックのカップルを追加」するクラッシュのために誰かのバグ修正を参照してくださいどのように多くの時間を伝えることはできません。あなたは根本的な原因に行かなければならない:その変数がNULLであるべきか?そうでない場合、それはなぜでしたか?

私たちは、コードのレビューを持っている理由

このです。

最大のリスクは、誰かがコードには影響しませんマイナー警告を解決するために開発時間の時間を費やすだろうということでしょう。それは時間の無駄になります。時にはそれは警告を維持し、警告が発生した理由を説明するコメントの行を追加するだけで簡単です。 (誰かがこれらのささいな警告を解決するための時間を持っているまで。)

私の経験では、ささいな警告を解決するには、多くの場合、開発者のための仕事の2日以上を追加します。これらは、締め切り前と後の仕上げの違いを作ることができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top