Java コードを静的に解析するために Coverity を使用したり評価したりした人からコメントをもらいたいです。C/C++ の世界で人気があることは知っていますが、Java の分析にお金を使う価値はありますか?それとも、PMD、Findbugs、およびその他のオープン ソース ツールを使用したほうがよいでしょうか?
4 に答える
今日何も使用していない場合は、Findbugs と PMD から始めます。インストールと使用が簡単です。最初に Findbugs を使用して正確性エラーを確認して修正することに集中します。チェッカーの誤検知は非常に低く、時間を節約できるため、重大度が高および中の正確性エラーから始めることをお勧めします。開発者に PMD を使用してコードをクリーンアップさせ、Eclipse の Findbugs プラグインを使用して新しいコードをレビューしてもらいます。段階的に作業を進めることで、開発者はこれらのツールの有用性を理解し、同意するようになります。
Coverity の Java チェッカーは、C/C++ チェッカーに比べてまだ弱いです。Findbugs、PMD、Coverity、および Klocwork を使用します。それらはすべて異なる長所を持ち、私たちは妄想的だからです。偏執的でない場合は、オープン ソース ツールを使い続けて多くの価値を得ることができます。または、セキュリティ チェックが必要な場合: Klocwork または特に Fortify がより徹底した作業を行う必要があります。
やや関連性のある回答でチップインします。Java コードと C コードの両方に Klocwork を使用しました。Klocwork は Coverity のライバルです...コスト的にはほぼ同じです (よく見てください。実際に必要なものを購入するまでは、Klocwork の方が安いように見えます)。
C/C++ の場合、これはすばらしいことです。Java については....まあ、多くのリソース リークを見つけるのに役立ちました ( #$@^#ing Java 開発者は、ファイル ハンドルのようなリソースはガベージ コレクションされないことを忘れているようです) が、多くは見つからないようです "重大な」バグ。おそらく、言語自体が、より基本的ではあるが見つけにくいエラー (配列のオーバーフロー、ポインターの破損など) から保護するのに役立つためです。
Coverity にデモを実行してもらいます。彼らは喜んでいます。彼らが見つけたものを見てください。
私が拘束されているCoverity NDAによって多少制限されている、制限付きのme-tooを前の回答に追加します。Coverity Prevent は、オープン ソースの C/C++ コードのバグを発見するという素晴らしい公開実績を持っていますが、彼らの Java 製品はもっと新しいものです。(Coverity は私の以前の雇用主に関するプレス リリースを持っているので、C/C++ コードの多くのバグを見つけて修正するのに役立ったと言えます。これは、以前のバグ ハンティングのすべてのキャリアで見つけたよりも多くのバグです。) FindBugs はそうします。 Java コードの印象的な仕事であり、価格に勝るものはありません。しかし、重要な点はすでに述べられています。購入する前に、実際のコードで両方を試してみてください。現実に代わるものはありません。静的分析の従来の知恵は、ツールが発見するものには驚くほどほとんど重複がないというものです。
他の人が言ったように、決定する最善の方法は、これらすべてのツールを試してみることです.
Coverity は最近、Code Spotter ( https://code-spotter.com/ ) と呼ばれるホスト型静的解析サービス製品を発表しました。現在はベータ版です。Coverity エンタープライズ製品と同じ分析エンジンを使用していますが、別の (簡素化された) ユーザー インターフェイスにラップされています。これはホストされたサービスであるため、Coverity の分析機能を理解するために簡単に操作できます。
この記事の執筆時点では、Code Spotter は Java のみですが、Coverity がサポートする他の言語も近日中に提供される予定です。