質問

最近、コードの Coverity Prevent の代替案について質問されましたC / C ++とJavaの両方を含むベース。明らかに、Java側では、Findbugs(コンパイル済みコード分析)およびPMD(静的コード分析)を含む無料のツールが利用可能です。特に、IDEとの統合の調査を開始するとき(これも無料です)、非常に強力です。

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

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

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

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

役に立ちましたか?

解決

頭に浮かぶのは、C用の Splint C ++のCppcheck

他のオプションを探したい場合、これらのツールのこの機能は「静的コード分析」です。これは、Cおよび/またはC ++用のツールを見つけるのに役立つかもしれません。また、質問"の回答に興味があるかもしれません。どのオープンソースC ++静的解析ツールが利用可能ですか?"

他のヒント

C ++は、そのツール(リファクタリングツールや静的分析ツールなど)がJavaやC#ほど優れていないほど複雑な言語です。

Gimpel Softwareの PC-lint は、C ++の標準的なバグチェックツールに最も近いものです。知ってる。合理的な価格設定モデルを備えた商用です。他のツールとどれだけうまく統合できるかわかりません。

Clang オープンソースプロジェクトは、最終的に多くのことを実行できるはずです(そして< em>本当にかっこいい)ですが、まだ開発中です。

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

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

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

Klocwork および Rational Software Analyzer は過去に使用されていましたが、どちらも正常に動作しますが、どちらも商用/非フリーです。

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

flawfinderに基づくrubyポートが必要な場合は、vulnxpose.rbを使用できます。 https://github.com/nanotechz9l/Source-code-analyzer

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

リック

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