Question

Existe-t-il un moyen d'identifier les attributs / méthodes inutilisés dans Visual C ++ 2008 Professional? Si ce n'est pas possible par défaut, les recommandations d'outils tiers sont également très appréciées.

Merci,
Florian

Modifier: nDepend ne fonctionne que pour les assemblys .NET. Je recherche quelque chose qui puisse être utilisé avec les applications C ++ natives.

Était-ce utile?

La solution

Essayez PC-Lint . C'est assez bon pour trouver du code redondant. Je n'ai pas encore essayé la version 9. La version 8 prend un certain temps à configurer. Essayez la démo interactive en ligne.

Autres conseils

Je n'ai pas personnellement utilisé leurs outils de productivité (j'utilise leur combinaison de contrôle Windows), mais il semble que DevExpress dispose d'un refactor'er C ++ appelé Refactor! pour C ++ . Je n'ai pas immédiatement repéré les fonctionnalités que vous recherchez, mais peut-être l'ont-elles?

Le validateur de couverture peut afficher le code C ++ non utilisé (mais pas les attributs). Il le fait de manière dynamique, vous devez donc "exersize" l'application pour obtenir les résultats: http://successfulsoftware.net/2008/03/10/coverage-validator/

La difficulté réside dans le fait que de nombreuses fonctions en C ++ doivent exister, même si elles ne sont pas appelées. Cela peut être provoqué surtout par Boost, mais même le code STL normal peut le faire. Et votre code doit jouer le long. Vous pouvez définir un ctor de copie car std :: vector le requiert formellement. Mais si vous n'instanciez aucun membre std :: vector qui copie effectivement un T, votre copie restera inutilisée.

Même s’ils n’y sont pas obligés, ils existent souvent pour des raisons de sécurité. Par exemple, la déclaration d'un constructeur de copie privée peut empêcher la copie involontaire d'un objet. Sans la déclaration privée, le compilateur définirait pour vous un contrôleur de copie public, membre par membre. Maintenant, est-ce que "" inutilisé " et voulez-vous être averti à leur sujet?

PC-Lint est très puissant, mais difficile à pencher. Bien sûr, cela décrit bien C et C ++, n'est-ce pas?

Un autre outil que je trouve excellent est le Visual Assist X de Whole Tomato, qui s'intègre directement à l'EDI.

Lors de la recherche de code non référencé, il y a beaucoup de pièges en C ++: les modèles, les callbacks et les gestionnaires de messages peuvent être critiques pour votre projet mais ne sont jamais appelés directement. Par exemple, le gestionnaire d'un thread n'est pas appelé directement, mais constitue un paramètre lorsque vous créez un nouveau thread. Le " On_buttonpress " Les messages de type dans les projets MFC ou WTL apparaîtront également comme méthodes non appelées.

Une fois que vous les avez trouvés, vous pouvez configurer PC-Lint pour les ignorer, mais la première fois, cela demande beaucoup de travail.

nDepend le fera, tout en nettoyant votre maison et en promenant votre chien. Une version Nagware est disponible gratuitement.

L'instruction de langage de requête de code suivante vous donnera une liste des méthodes inutilisées

 WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE MethodCa == 0 AND 
   !IsPublic AND !IsEntryPoint AND !IsExplicitInterfaceImpl AND 
   !IsClassConstructor AND !IsFinalizer
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top