C++ プロジェクトに VS2008 を使用しています。コードはかなり古く、多くの人の手を経てきました。使用されなくなったクラス階層、関数、列挙型などがいくつかあります。
宣言または定義されているが、どこにも参照されていない識別子をコンパイラ/リンカーにリストさせる方法はありますか?
C++ プロジェクトに VS2008 を使用しています。コードはかなり古く、多くの人の手を経てきました。使用されなくなったクラス階層、関数、列挙型などがいくつかあります。
宣言または定義されているが、どこにも参照されていない識別子をコンパイラ/リンカーにリストさせる方法はありますか?
VS は、関数内で宣言されていて使用されていない識別子について警告します。警告レベル 4 に移行する必要があるかもしれませんが、グローバル変数については、他の多くの潜在的な問題を探すために、lintまたは視覚的な lintを試すことをお勧めします。
PC-Lint の「プロジェクト全体」分析 (複数のファイルを一緒に分析する) を使用すると、これを行うことができます。設定のサポートが必要な場合は、お気軽にお問い合わせください。
PC-Lintがこれを行います。ただし、すべて 1 で実行しないでください。120 万のエラーが発生しました。これは、1 行あたり約 5 に相当します。これは、resource.h および resource.h を参照するほとんどすべての UI クラスが、lint が「定義を const int に置き換える」と言う多くの #define をリストしているため、大幅に押し上げられました。適切な出発点として、Power of 2 ブログのこの投稿をお読みください。
Visual C++ についてはわかりませんが、g++ は未使用の変数について警告します。g++ を介してコードを渡そうとするかもしれません。
Graham の投稿: FWIW を参照して、resource.h ファイルで "replace defined with const int" メッセージを実際に見たことはありません。
とにかく、特定の PC-Lint メッセージが探しているものを見つけるのを妨げている場合は、options.lnt ファイルで -e を使用してそれをオフにするのは簡単なことです。また、警告レベルをグローバルに設定できる -w オプションについても知っておく価値があります (たとえば、-w0 +e766 は、メッセージ 766 以外のすべてをオフにします)。
未使用のシンボルと宣言については、755 (情報 -- グローバル マクロが参照されていません)、758 (情報 -- グローバル列挙型が参照されていません)、769 (情報 -- グローバル列挙定数が参照されていません) などのメッセージに注意する必要があります。および 1714 (情報 -- メンバー関数が参照されていません)。これらは単一ファイル分析では抑制されるため、それらを表示するにはプロジェクト全体の分析を実行する必要があることに注意してください。
最も明白な未使用の宣言については、高い warnlevel が問題を処理します。
未使用のコードの識別に関しては、デッドストリッパー (深夜の犯罪ドラマの中心ではありませんが、リンク中に未使用のコードを選別するメカニズム) はあなたを道の一部にするだけです-あなたが本当に欲しいのはコードカバレッジです分析ツール。たくさんありますが、残念ながらどれもかなり高価です。
優れたコンテキスト タグ付けと呼び出しグラフ作成メカニズムを備えた堅牢なエディターも役立ちます。