Visual Studio2008でコンパイルされた大規模なレガシーC++プロジェクトがあります。どこにもアクセスされない「デッド」コードがかなりの量あることを知っています。メソッドは呼び出されず、クラス全体が使用されません。
静的分析によってこれを識別するツールを探しています。
この質問: レガシーC/C++プロジェクトでのデッドコード検出 コードカバレッジツールの使用を提案します。テストカバレッジが十分に高くないため、これはオプションではありません。
また、-Wunreachable-codeについても言及しています。 gccへのオプション。 VisualStudioにも似たようなものが欲しいのですが。リンカの/ OPT:REFオプションを使用して冗長コードを削除しましたが、これはデッドコードを有用なレベルで報告しません(/ VERBOSEとともに使用すると、ライブラリからの多くを含め、100,000行を超えます)。
Visual Studioプロジェクトでうまく機能するより良いオプションはありますか?
QA-C++( http://www.programmingresearch.com/QACPP_MAIN.html )に沿ったものが必要になります。 http://en.wikipedia.orgも参照してください)。/wiki/List_of_tools_for_static_code_analysis 同様の製品の場合。
到達不能コードを検出する静的コード分析ツールを探しています。多くのコーディングガイドライン(私が間違っていなければ、MISRA-C++など)では、到達不能コードが存在しないことが要求されています。このようなガイドラインを実施するために特別に調整された分析ツールが最善の策です。
また、ツールの他の用途も見つけることができるようになります。
Visual Cを知りません。また、-Wunreachable-code固有のカバレッジツールも推奨していました。あなたの状況の解決策として、私は以下を試してみます:
別のアプローチは、コールグラフ生成ツール(doxygenなど)である可能性があります。
いくつかのアプローチを使用することをお勧めします。1。GCCにはいくつかの便利なコンパイルフラグがあります。
-Wunused-function
-Wunused-label
-Wunused-value
-Wunused-variable
-Wunused-parameter
-Wunused-but-set-parameter
2. Cppcheckには、次のような便利な機能がいくつかあります。
--enable=unusedFunction
3.前に提案したように静的アナライザーを使用します。
Delphiを使用した場合に有効なアプローチの1つは、デバッグを有効にして、デバッガーでプログラムを実行することです。
Delphiプログラムをデバッガーで実行すると、IDEは、ブレークポイントとして設定できるコード行を余白に表示します。本当に死んでいるコード、つまりリンカーによって削除されたコードブレークポイントを設定できないため、/ compilerは明らかです。
コメント投稿者がこれを誤解しているように見えるため、いくつかの追加のメモ:
a:各行にブレークポイントを設定する必要はありません。 IDEでソースファイルを開き、すばやくスクロールするだけです。デッドコードは簡単に見つけられます。
b:これは「コードカバレッジ」チェックではありません。アプリケーションを実行して、行に到達するかどうかを確認する必要はありません。
c:私はVS2008に精通していないので、この提案が機能するかどうかはわかりません。
どちらか
1)MSVCは組み込みで十分に活用されていません 静的分析ツール 。
2)MSVC marketplace には、 CppCheck を含む、ほとんどの無料ツールのサポートを含む多くのツールがあります。
マーケットプレイスアプリケーションには最新バージョンのVisualStudioが必要ですが、無料の " Community Edition "には非常に寛大なライセンスがあります。