Visual C++ 2008 Professional で未使用の属性/メソッドを特定する方法はありますか? デフォルトでは不可能な場合は、サードパーティ製ツールの推奨事項も大歓迎です。
ありがとう、
フロリアン
編集: nDepend は .NET アセンブリに対してのみ機能します。ネイティブ C++ アプリケーションで使用できるものを探しています。
Visual C++ 2008 Professional で未使用の属性/メソッドを特定する方法はありますか? デフォルトでは不可能な場合は、サードパーティ製ツールの推奨事項も大歓迎です。
ありがとう、
フロリアン
編集: nDepend は .NET アセンブリに対してのみ機能します。ネイティブ C++ アプリケーションで使用できるものを探しています。
PC-Lint を試してみてください。冗長なコードを見つけるのはかなり得意です。バージョン9はまだ試していません。バージョン 8 の構成には時間がかかります。オンラインのインタラクティブ デモをお試しください。
私は彼らの生産性ツールを個人的に使用したことはありません (私は彼らの Windows コントロール スーツを使用しています) が、DevExpress にはRefactor と呼ばれる C++ リファクタリング機能があるようです! C++ の場合。あなたが探している機能をすぐには見つけられませんでしたが、おそらくそれを持っていますか?
注意が必要なのは、C++ の多くの関数は、呼び出されなくても存在しなければならないことです。Boost は特にこれを引き起こしますが、通常の STL コードでもこれを行うことができます。そして、あなたのコードはそれに合わせなければなりません。std::vector が正式に必要とするため、コピー ctor を定義する場合があります。ただし、実際に T をコピーする std::vector メンバーをインスタンス化しない場合、コピー ctor は使用されないままになります。
必要がない場合でも、安全のために存在することがよくあります。たとえば、プライベート コピー コンストラクターを宣言すると、オブジェクトの意図しないコピーを防ぐことができます。private 宣言がなければ、コンパイラは public のメンバーごとのコピー ctor を定義します。さて、これは「未使用」で、警告を受けますか?
カバレッジ バリデーターは、未使用の C++ コードを表示できます (ただし、属性は表示できません)。それは動的に行われるため、結果を得るにはアプリを「エクササイズ」する必要があります: http://successfulsoftware.net/2008/03/10/coverage-validator/
nDependは、家の掃除や犬の散歩に加えて、それを行います。無料で利用できる nagware バージョンがあります。
次のコード クエリ言語ステートメントは、未使用のメソッドのリストを取得します。
WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE MethodCa == 0 AND
!IsPublic AND !IsEntryPoint AND !IsExplicitInterfaceImpl AND
!IsClassConstructor AND !IsFinalizer