2013-08-19 39 views
10

私たちは静的解析ツールとしてKlocworkを使用しています。静的解析ツールKlocworkとFindbugsを比較したことがありますか?

Klocworkは商用ツールであり、多くの利点がありますが、偽陽性のような制限もあります。

KlocworkをFindbugsなどのオープンソースツールと比較したことがあるのは誰かと思います。

一般に、商用ツールはオープンソースツールより信頼性が高いことが知られています。

しかし、私はKlocworkもアンドロイドなどの特定のビジネスドメインでいくつかの信頼できる問題があると思います。

Klocworkは他のオープンソースツール、特に誤検出や偽陰性の点でFindbugsより優れていると言えますか?

+0

あまりにも広すぎると投票してください。 –

答えて

19

私は商用とオープンソースの静的コード解析ツール(SCAT)を数年前に比較しました。 Klocworkはその一つでした。短い話をするために、Java環境では商用ツールが価格を正当化するために必要な(追加の)価値を提供していなかったという結果が得られました。発見されたバグの数は、これらのツールよりもはるかに優れていました。カバレッジだけが他のツールのどれも見つけられなかったいくつかのバグを見つけ、最も低い数字を持っていた。FPR。他の側面では、カバーバディはfindbugsが見つけた多くのバグを検出しませんでした - 私たちのために、すべてのツールは関係する金額を正当化しませんでした。そして正しく設定されていれば、findbugsは非常に低いFPRも提供します。最近のバージョンでは、findbugをソリューションに統合する可能性が含まれていました。 Mhhmmmなぜ彼らはそれをしましたか? :-)

ただし、シナリオがあります。 (例えばC、C++、C#...のような)他のプログラミング言語を含むコードベースや、それらのツールによって提供されるいくつかの追加機能が必要な場合、商用ツールに変換する。しかし、すべてのソリューションをテストできるので、あなた自身の心をつくることができます。自分のウェブページにアクセスして試用版をダウンロード/リクエストしてみてください。

コマーシャル:

  1. Coverity
  2. Klocwork
  3. Parasoft
  4. Cast

は、私は次のツールをチェックアウトオープンソース:

  • Findbugs
  • PMD
  • Checkstyle(ではないが、実際のSCATが、より多くのスタイルチェッカーなど)最後にそう

私たちは何をしましたか? findbugs、pmd、checkstyle、coberturaなどの多くのツールを組み合わせた無料のsonar serverをインストールしました。これにより、商用ツールよりも多くの面で優れたソリューションが得られました。私が商用ルートに行く必要があるならば、おそらくカバー率を詳しく見ていきます(そしてCASTをもう一度見ないでください)。

パフォーマンスに関するご質問については、[更新] - FindBugsのは、(問題が発生した場合、その後findbugs mailing listに投稿して、彼らはあなたを助ける)の問題もなく巨大なコードベースをスキャンすることができます。私は再びfindbugsも最も速いツールの一つだったことを覚えています。例えば、Coverityは2時間近くかかっていましたが、findbugは10分ほどで完了しました。他のツールは、それらの数字の間にあります。

CおよびC++コードのスキャンに関しては、Splintcppcheckを参照してください。また、そのトピックについて議論している他のhelpfulスレッドもあります。しかし、findbugsはJavaのためだけであり、商用ツールには利点があるかもしれないプログラミング言語間の問題を検出したいからです。 findbugsは無料ですから、コードベースで実行して、自分のために何が起こるかを見てください。あなたのプロジェクトはそれだけで恩恵を受けることができます!次に見つかったバグを修正し、その後商用ツールのいくつかを試してみてください。見つけたバグの量と支払う価格によって、あなた自身の結論を引き出します。例を挙げてみましょう:ツールの1つに「コード行数」/ 10で割ったものがあります。しかし、それは面白いmaster thesisこのトピックを議論発見[UPDATE II]

;-)あなたのケースでは、あなたが割引を受けることかもしれません。主要な部分はfindbugについてですが、klockworkとcoverityについても言及しています。

+1

ありがとう。あなたの答えはとても役に立ちます。もう一つ質問があります。実際には、Java、c、およびC++を含むAndroidの完全なソースコードの静的解析を行う必要があります。あなたによると、Findbugsは他の言語をカバーする面で限界があります。制限については、アンドロイドAOSP(Java:1,000万LOC、C/C++:500万LOC)のような大規模なソースコードを、Findbugsでカバーすることができるのだろうか。 – 500004dolkong

+0

あなたの答えとアドバイスは非常に印象深く、私にとって有益です。どうもありがとう。^^ – 500004dolkong

+0

あなたの答えは良い参考点でした。あなたの経験では、これらのスイートに対する偽陽性と偽陰性の割合は何ですか?ありがとうございました。 –

関連する問題