C / C ++に相当するFindbugsおよび/またはPMDはありますか?
質問
最近、コードの Coverity Prevent の代替案について質問されましたC / C ++とJavaの両方を含むベース。明らかに、Java側では、Findbugs(コンパイル済みコード分析)およびPMD(静的コード分析)を含む無料のツールが利用可能です。特に、IDEとの統合の調査を開始するとき(これも無料です)、非常に強力です。
ただし、さまざまなコンパイラ、アーキテクチャなどを使用してC / C ++レルムに移行し始めると、事態は危険にさらされます。
FindbugsとPMDの両方を含む、Java側のさまざまなツールを提案しました。私が探しているのは、次の指標を使用することを検討したときに、C / C ++側に最適なオプションです。
- 価格:無料の方が優れていますが、より良い価値に負ける可能性があります。ただし、コードの行ごとに課金する価格モデルは恐ろしいです。
- 機能セット:このツールは私の生活をどのように改善しますか?チェックインする前、コードを出荷する前など、どのようにミスを検出しますか?
- 使いやすさ:デスクでツールを使用できますか?レポートや調査結果を共有できますか?ツールをFogbugz(グループで使用)と統合できますか?このツールをCruiseControl(または同等のもの)に統合できますか?
究極のツールは、同一の機能セットを備えたFindbugsとPMDの組み合わせと同じくらい便利で使いやすいもので、すべて1シートあたり0ドルです。
解決
頭に浮かぶのは、C用の Splint と C ++のCppcheck 。
他のオプションを探したい場合、これらのツールのこの機能は「静的コード分析」です。これは、Cおよび/またはC ++用のツールを見つけるのに役立つかもしれません。また、質問"の回答に興味があるかもしれません。どのオープンソースC ++静的解析ツールが利用可能ですか?"
他のヒント
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"
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 ++ソースコードファイルをスキャンします。詳細)。
リック