Visual C ++ 2008で未使用の属性/メソッドを見つける方法
-
02-07-2019 - |
質問
Visual C ++ 2008 Professionalで未使用の属性/メソッドを識別する方法はありますか?デフォルトで不可能な場合は、サードパーティ製ツールの推奨も大歓迎です。
ありがとう、
フロリアン
編集: nDependは.NETアセンブリでのみ機能します。ネイティブC ++アプリケーションで使用できるものを探しています。
解決
PC-Lint をお試しください。冗長なコードを見つけるのは得意です。 バージョン9はまだ試していません。バージョン8の構成には時間がかかります。 オンラインインタラクティブデモをお試しください。
他のヒント
私は個人的に生産性ツールを使用していませんが(Windowsコントロールスーツを使用しています)、DevExpressにはリファクタリング! C ++の場合。あなたが探している機能をすぐに見つけられませんでしたが、多分彼らはそれを持っていますか?
Coverage Validatorは、未使用のC ++コードを表示できます(属性は表示できません)。動的に実行されるため、結果を取得するにはアプリを「実行」する必要があります。 http://successfulsoftware.net/2008/03/10/coverage-validator/
注意が必要なのは、呼び出されなくても、C ++の多くの関数が存在する必要があるということです。 Boostは特にこれを引き起こしますが、通常のSTLコードでさえこれを行うことができます。そして、あなたのコードは一緒に遊ぶ必要があります。 std :: vectorが正式に必要とするため、コピーアクターを定義できます。ただし、実際にTをコピーするstd :: vectorメンバーをインスタンス化しない場合、コピーctorは未使用のままになります。
必要がない場合でも、安全のために存在することがよくあります。たとえば、プライベートコピーコンストラクターを宣言すると、オブジェクトの意図しないコピーを防ぐことができます。 private宣言がなければ、コンパイラーはメンバー用のパブリックコピークターを定義します。さて、これは「未使用」ですか?そして、それらについて警告を受けたいですか?
PC-Lintは非常に強力ですが、傾けることは困難です。もちろん、それはCとC ++をかなりよく説明していますか?
優れていると思うもう1つのツールは、Whole Tomatoの Visual Assist X で、IDEに直接統合されています。
C ++には、参照されていないコードを検索するときに大きな落とし穴があります。テンプレート、コールバック、およびメッセージハンドラーはプロジェクトにとって重要ですが、直接呼び出されることはありません。たとえば、スレッドのハンドラーは直接呼び出されませんが、新しいスレッドを作成するときのパラメーターです。 " On_buttonpress" MFCまたはWTLプロジェクトのタイプメッセージも、呼び出されていないメソッドとして表示されます。
これらを見つけたら、これらを無視するようにPC-Lintを設定できますが、最初は多くの作業を行います。
nDepend は、家の掃除や散歩に犬を連れて、それを行います。 nagwareバージョンは無料で入手できます。
次のコードクエリ言語ステートメントは、未使用のメソッドのリストを取得します
WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE MethodCa == 0 AND
!IsPublic AND !IsEntryPoint AND !IsExplicitInterfaceImpl AND
!IsClassConstructor AND !IsFinalizer