Javaには、 FindBugs 、 Checkstyle 、および PMD などの非常に優れたオープンソースの静的分析ツールがあります。これらのツールは使いやすく、非常に便利で、複数のオペレーティングシステムで実行され、freeです。
市販のC++静的解析製品が利用可能です。そのような製品を持っていることは素晴らしいことですが、コストは学生にとってはあまりにも多すぎて、通常、試用版を入手するのはかなり困難です。
別の方法は、複数のプラットフォーム(WindowsおよびUnix)で実行されるオープンソースのC++静的解析ツールを見つけることです。オープンソースのツールを使用することにより、特定のニーズに合わせて変更できます。ツールを見つけることは簡単な作業ではありませんでした。
以下は、他の人によって発見または提案されたC++静的解析ツールの短いリストです。
-Weffc++
を使用します(回答から)誰もが知っていて推奨できるポータブルなオープンソースのC++静的解析ツールotherとは何ですか?
いくつかの関連リンク。
Oinkは、Elsa C++フロントエンドの上に構築されたツールです。 Mozillaの豚肉はElsa/Oinkのフォークです。
GNUコンパイラに関しては、gccには、-Wallのオプションに追加のwarningを有効にする組み込みオプションが既にあります。オプションは-Weffc ++です。これは、彼の著書 "Effective and More Effective C++"で公開されているScott Meyersのいくつかのガイドラインの違反に関するものです。
特に、このオプションは次のアイテムを検出します。
現時点では開発中ですが、 clang はC分析を行い、C++を長期にわたって処理することを目的としています。 LLVM プロジェクトの一部です。
Update:ランディングページに「アナライザーは継続的な作業中です」と表示されますが、それでも今は ドキュメント化された CとC++の両方の静的アナライザーとして。
質問: 静的分析のためにGCC/Clangを実行するにはどうすればよいですか(警告のみ)
コンパイラオプション:-fsyntax-only
他の誰かが-Weffc ++に言及しましたが、実際にはデフォルトでオンにしないGCC警告の1つです。ただし、有効にする一連の警告は、キットで最も重要な静的解析ツールです。 推奨される警告の完全なリスト を確認できます。
要約すれば:
-pedantic -Wall -Wextra -Wcast-align -Wcast-qual -Wctor-dtor-privacy -Wdisabled-optimization -Wformat = 2 -Winit-self -Wlogical-op -Wmissing-declarations -Wmissing-include-dirs -Wnoexcept -Wold -style-cast -Woverloaded-virtual -Wredundant-decls -Wshadow -Wsign-conversion -Wsign-promo -Wstrict-null-sentinel -Wstrict-overflow = 5 -Wswitch-default -Wundef -Werror -Wno-unused
これらのいくつかはgccの新しいバージョンを必要とすることに注意してください。そのため、4.5などに戻った場合、リストから削除する必要があるかもしれません。
John Carmackは、この興味深い PVS-Studio にも言及しています 「静的コード分析」に関するブログ投稿 。
オープンソースによって、本当に「無料」を意味するのであれば、Microsoftの prefast 分析が適切です。もちろん、Windowsのみです。 Visual Studioとコンパイラに完全に統合されています。例えば。:
cl /analyze Sample.cpp
Mozillaの静的解析作業 はおそらく一見の価値があります。
スプリント はCの請求書を埋めているようです。
オープンソースを指定しなかった場合、 Gimpel Software の PCLint は、おそらくC++での静的コードチェックに利用できる最高のツールの1つです。しかし、もちろん、それはオープンソースではありません。
Mac OSX:
brew install splint
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チェッカーとして実装されます。分析結果は、別のビューで調べることができます。各メトリックには、構成可能なプロパティがあります(たとえば、「関数ごとのコードの最大行数」のしきい値)。これらのしきい値を超えると、問題が報告され、ソースコードエディターでマーカーが作成されます。
計量器を使用すると、次のことができます。
現在、メトリックスには次のメトリックスが付属しています。
GCCの拡張機能を MELT (GCCを拡張するために設計されたドメイン固有の言語)またはCのGCCプラグイン(はるかに難しい)でコーディングして、カスタム分析を行うこともできます。
Xemacsとの素晴らしい統合を備えたoo-browserを試してください。
Doxygenはいくつかの制御フロー分析を行い、グラフを生成します。それらはあなたが探しているものではないかもしれませんが、私はそれらを見るのに便利だと思っています。