19

私は最近、C/C++ と Java の両方を含むコード ベース用のCoverity Preventの代替案について尋ねられました。もちろん、Java 側では、Findbugs (コンパイル済みコード分析) や PMD (静的コード分析) などの無料ツールを利用できます。これらは非常に強力であり、特に IDE (これも無料です) との統合を調査し始める場合には有効です。

ただし、さまざまなコンパイラ、アーキテクチャなどを使用して C/C++ の領域に移行し始めると、事態は危険です。

Findbugs と PMD の両方を含む、Java 側のさまざまなツールを提案しました。私が探しているのは、次のメトリックを使用することを検討した場合の C/C++ 側の最適なオプションです。

  1. 価格: 無料の方が優れていますが、よりお得です。ただし、コード行ごとに課金する価格モデルは恐ろしいものです。
  2. 機能セット: このツールは私の生活をどのように改善しますか? チェックインする前、コードを出荷する前などに、どのような方法で間違いを検出しますか?
  3. ユーザビリティ: デスクでツールを使用できますか? レポートや調査結果を共有できますか? このツールを Fogbugz (私のグループで使用しています) と統合できますか? このツールを CruiseControl (または同等のもの) に統合できますか?

究極のツールは、Findbugs と PMD を同じ機能セットで組み合わせたのと同じくらい便利で使いやすく、1 シートあたり 0 ドルで提供されるものです。

4

5 に答える 5

4

頭に浮かぶのは、 C用のSplintと C++ 用のCppcheckの 2 つです。

さらにオプションを探したい場合は、これらのツールのこの機能が「静的コード分析」です。これにより、C や C++ 用のツールをさらに見つけることができます。また、 「オープンソースの C++ 静的解析ツールにはどのようなものがありますか?」という質問への回答にも興味があるかもしれません。

于 2009-09-16T15:16:24.793 に答える
3

PC-Lintは行く方法です。他のほとんどのツールとは異なり、完全な関数間およびモジュール間の値の追跡機能を備えており、テンプレートのコンパイル/解析のすべてのヘアエッジもサポートします。とても安いからといって、9年ほど前に自分用に個人用のコピーを購入しました。結局、オープンソースプロジェクトで多く使用することになりました。PC-LintはLOCに基づいてライセンスを取得せず、自宅に電話をかけず、ライセンスサーバーもありません。それは非常に名誉システムにあり、非常にナンセンスです。9年間で、いくつかの問題が見つかりました(そして、それらはほとんどありませんでした)が、ほとんどの場合、数週間で修正されました。

オープンソースに関しては、Coverityのメタコンパイル分析手法に基づいたSMatchがあります。これは、ワインプロジェクトが非常に効果的に使用しています。PMDのcpd(コピーペースト検出器)サブツールはC ++で動作し、非常に高速です。循環的複雑度については、apt-getを介して簡単にインストールできるpmccabeがあります(Linuxでは、Windowsではcygwinでソースをコンパイルします)。

PC-Lintを正常に機能させるには、せいぜい1日か2日でいくつかの構成が必要です。他のツールはそれほど深くは機能しないため、「find . -name .c | xargs pmccabe | sort -n | tail -n 20」のようなコマンドを使用して、実行を開始できます。

于 2009-12-01T21:38:45.043 に答える
0

C/C++ で 160 の危険な関数をスキャンする、flawfinder.py を使用します。 http://www.dwheeler.com/flawfinder/

欠陥ファインダーに基づくルビーポートが必要な場合は、vulnxpose.rb を使用できます。 https://github.com/nanotechz9l/Source-code-analyzer

これらのツールはどちらも C/C++ ソース コード ファイルをスキャンして、既知の脆弱性 (バッファ オーバーフロー、競合状態、脆弱な暗号、chroot jail 構成など) を探します)。

リック

于 2013-10-04T22:33:28.790 に答える
0

私は過去にKlocworkRational Software Analyzerを使用しましたが、どちらも商用/非フリーですが、どちらもうまく機能します。

于 2009-09-16T15:32:09.650 に答える