Question

J'utilise VS2008 pour un projet C ++. Le code est assez ancien et a passé entre de nombreuses mains. Plusieurs classes, hiérarchies, fonctions, énumérations, etc., ne sont plus utilisés.

Existe-t-il un moyen de demander au compilateur / éditeur de liens de répertorier les identificateurs déclarés ou définis, mais auxquels il n'est pas fait référence?

Était-ce utile?

La solution

PC-Lint "tout le projet" l'analyse (qui analyse plusieurs fichiers ensemble) peut le faire. N'hésitez pas à me contacter si vous avez besoin d'aide pour le configurer.

Autres conseils

Les VS avertiront des identificateurs déclarés dans une fonction et non utilisés, vous devrez peut-être passer au niveau d'alerte 4, mais pour les variables globales et rechercher de nombreux autres problèmes potentiels, vous feriez bien d'essayer lint ou charpente visuelle

Pas sûr de Visual C ++, mais g ++ met en garde contre les variables inutilisées. Vous pouvez essayer de transmettre votre code via g ++.

PC-Lint le fera. Cependant, ne l'exécutez pas avec tout ce que vous voulez. J'ai fait et eu 1,2 million d'erreurs - ce qui équivaut à environ 5 par ligne. Cela a été considérablement augmenté, car presque toutes les classes de l'interface utilisateur référencées resource.h et resource.h répertorient un grand nombre de #defines auxquelles lint dit "replace définit avec const int". Pour un bon point de départ, lisez cette publication sur le blog Power of 2 .

Pour les déclarations inutilisées les plus évidentes, un niveau de mise en garde élevé s’occuperait de la question.

En ce qui concerne l’identification des morceaux de code inutilisés, le condamné (ce n’est pas le centre d’un drame criminel de fin de soirée, mais le mécanisme qui supprime le code inutilisé lors de la liaison) ne vous mènera qu’en partie - ce que vous voulez vraiment, c’est un outil d'analyse de couverture de code. Il en existe de nombreuses, mais malheureusement toutes sont assez chères.

Un éditeur robuste doté de bonnes techniques de marquage du contexte et de graphisme des appels sera également utile.

En référence au message de Graham: FWIW, je n’ai jamais vu le "remplacer définit par const int". message avec les fichiers resource.h - bien que d'autres (précédemment définis au même emplacement) puissent être pénibles.

Quoi qu’il en soit, si un message PC-Lint particulier vous empêche de repérer ce que vous recherchez, désactivez-le simplement en utilisant -e dans votre fichier options.lnt. Vous devez également connaître l’option -w, qui vous permet de définir globalement le niveau d’avertissement (par exemple, -w0 + e766 désactive tout sauf le message 766).

Pour les symboles et les déclarations inutilisés, vous devez rechercher des messages tels que 755 (Information - macro globale non référencée), 758 (Information - énumération globale non référencée), 769 (Information - constante d'énumération globale non référencé) et 1714 (Information - Fonction membre non référencée). N'oubliez pas que ceux-ci sont supprimés dans l'analyse de fichier unique. Vous devez donc exécuter une analyse de projet complète pour les voir.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top