どのオープンソースC ++静的解析ツールが利用可能ですか? [閉まっている]

StackOverflow https://stackoverflow.com/questions/141498

質問

Javaには、 FindBugs Checkstyle および PMD 。これらのツールは使いやすく、非常に便利で、複数のオペレーティングシステムで実行され、無料です。

商用C ++静的解析製品が利用可能です。そのような製品を持っていることは素晴らしいことですが、費用は学生にとっては多すぎて、通常は試用版を入手するのはかなり難しいです。

別の方法は、複数のプラットフォーム(WindowsおよびUnix)で実行されるオープンソースのC ++静的解析ツールを見つけることです。オープンソースのツールを使用することにより、特定のニーズに合わせて変更できます。ツールを見つけるのは簡単な作業ではありませんでした。

以下は、他の人によって発見または提案されたC ++静的解析ツールの短いリストです。

その他のポータブルオープンソースC ++静的解析ツールとは、誰でも知っていて推奨できるものですか?

いくつかの関連リンク。

役に立ちましたか?

解決

Oinkは、Elsa C ++フロントエンドの上に構築されたツールです。 Mozillaの豚肉はElsa / Oinkのフォークです。

参照: http://danielwilkerson.com/oink/index.html

他のヒント

CppCheck はオープンソースであり、クロスプラットフォームです。

Mac OSX:

brew install cppcheck

GNUコンパイラについては、gccにはすでに組み込みオプションがあり、-Wallのオプションに追加の warning を有効にします。オプションは -Weffc ++ であり、彼の著書" Effective and More Effective C ++ "に掲載されている Scott Meyers のガイドライン違反に関するものです。 。

特に、このオプションは次のアイテムを検出します:

  • メモリを動的に割り当てるクラスのコピーコンストラクターと代入演算子を定義します。
  • コンストラクターでの割り当てよりも初期化を優先します。
  • デストラクタを基本クラスで仮想化します。
  • 「演算子=」を使用; * thisへの参照を返します。
  • オブジェクトを返す必要があるときに参照を返そうとしないでください。
  • インクリメント演算子とデクリメント演算子の前置形式と後置形式を区別します。
  • "&&"、" ||&quot ;、または"、"をオーバーロードしないでください。

現在は開発中ですが、 clang はC分析を行い、C ++の処理を対象としています。時間。これは、 LLVM プロジェクトの一部です。

更新:ランディングページに「アナライザーは継続的な作業中です」と表示されていますが、それでも CおよびC ++の両方の静的アナライザーとして文書化

質問: GCCの実行方法/ Clangの静的分析? (警告のみ)

コンパイラオプション:-fsyntax-only

もしあなたがオープンソースによって、本当に「無料」を意味するなら、マイクロソフトの prefast 分析は良いものです。もちろん、Windowsのみ。 Visual Studio&に完全に統合されています。コンパイラ。例:

cl /analyze Sample.cpp

Mozillaの静的解析作業は一見の価値があります。

Splint はCの請求書を満たすようです。

オープンソースを指定しなかった場合、 Gimpel Software PCLint は、おそらくC ++の静的コードチェックに使用できる最高のツールの1つです。しかし、もちろん、それはオープンソースではありません。

Mac OSX:

brew install splint

Microsoftの PREFast は、Windows Driver Kitにも含まれています。バージョン7.0はこちら。

Microsoftのドキュメントでは、ドライバーコードに対してのみ実行するように規定されていますが、これは(古い)ブログの投稿では、実行手順を説明しています。おそらく、通常のビルドプロセスに統合できますか?

私たちは、metriculatorと呼ばれるEclipse CDTプラグインに取り組んできました。まだ開発中ですが、いくつかの主要なメトリック(LSLOC、McCabe、EfferentCouplingなど)は既に実装されています。

http://sinv-56013.edu.hsrを参照.ch / redmine / projects / metricular / wiki / Documentation でビデオデモやドキュメントなどの詳細をご覧ください。

最新のナイトリービルドは、次の更新サイトからインストールできます: http://sinv-56013.edu.hsr.ch/metriculator/updatesite-nightly/site/

詳細説明

MetriculatorはC ++ソースコードを静的に分析し、ソフトウェアメトリックを生成します。メトリックは次のように実装されます Codanチェッカー。分析結果は、別のビューで調べることができます。各 メトリックには設定可能なプロパティがあります(例:「 関数')。これらのしきい値を超えると問題が報告され、マーカーが作成されます ソースコードエディタで。

メトリックメーターを使用すると、次のことができます。

  • C ++ファイル/フォルダー/プロジェクトの分析
  • メトリックのしきい値を定義し、Codans設定ページを使用してメトリックを有効/無効にします
  • ソースコードエディターに問題マーカーがある
  • メトリック結果の調査
  • メトリクスの結果をタグクラウドとしてエクスポート(更新サイトからオプション機能として利用可能)

現在、メトリックスには次のメトリックスが付属しています:

  • McCabe(サイクロマティックコンプレックス)
  • タイプごとのEfferentCoupling
  • 論理ソースコード行
  • タイプごとのメンバー数
  • 関数ごとのパラメーターの数

xemacsとの素晴らしい統合を備えたoo-browserを試してください

MELT (GCCを拡張するために設計されたドメイン固有の言語)またはGCCでGCCの拡張機能をコーディングすることもできます。カスタム分析を行うためのCのプラグイン(はるかに難しい)。

Doxygenはいくつかの制御フロー分析を行い、グラフを生成します。それらはあなたが探しているものではないかもしれませんが、私はそれらを見るのに便利だと考えています。

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