私はジョエル・テストで少なくとも11点を獲得する会社で働いています。少なくとも紙の上では。
ただし、実際には、期待どおりに機能するものはなく、プロジェクトはDEFCON 1で半年間使用されています。今、私の同僚のほとんどは、日曜日の午後6時に帰宅できれば幸いです。
動作していないように感じた一見良いプラクティスの1つは、静的分析ツールの使用です。このプロジェクトは、gcc -Wall警告と独自の非常に高価な「C / C ++」ツールの両方を追跡します。
GCCの警告は、実際の(ほとんどの場合、不快ではない)バグを指すことはほとんどありません。
ただし、プロプライエタリなツールは、暗黙的なキャストや文字列リテラルのsizeof'ingなどをリストします。暗黙のキャストもスタイルブックでブラックリストに載っています。
標準的な慣行では、すべての警告を黙らせる必要があります。これにより、主に誤検知である警告が除外されることに注意してください。これは問題ではありません。
結果は次のとおりです。
- 人々はすべての右辺値とすべての引数に型キャストを追加し、プロセスで実際に問題のある型の不一致を隠します。
- 人々は1つのバグで紹介するか、別の問題のある言語機能を使用します(sizeofの代わりにstrlen、strcpyの代わりにstrncpyなど)。
- 警告は沈黙します。
- バグレポートが開始されます。
主なポイントは、元のコードが機能しており、言語能力の範囲内で安全に遊んでいた人々によって書かれていたのに対し、修正はそうではなかったことです。
今、私はこの会社が救われるとは考えていません。ただし、「プロ」ツールを使用するためのより良い、できれば機能する方法があるかどうか、または私が将来決定を下す場合にそれらの使用を完全に避けるべきかどうかを知りたいです。
すべてのプログラマーが失敗することのない天才だとは限らないソリューション。なぜなら、そうであれば、そもそもツールを使用する必要がないからです。