2009-03-05 10 views
6

J'ai reçu une application C# avec Visual Studio 2005. Le code a environ 300 KLOC, qui a été abusé pendant 3 ans.Nettoyer le code indésirable C#

Lorsque je passais en revue le code trouvé beaucoup de fonctions/méthodes/propriétés inutilisées. Il n'est pas possible de nettoyer le code manuellement (Nécessite la vérification de chaque membre et si aucune référence ne le supprime.)

Je cherche à automatiser ce processus, par VS macro, qui va parcourir chaque membre dans le code, si c'est le cas ne pas avoir de références il devrait le supprimer, si trouvé des références, vérifier les références de son membre appelant si appel membre, n'a pas de référence, il devrait supprimer les deux et ainsi de suite.

Je suis sûr que quelqu'un l'aurait craqué plus tôt.

+1

Heureusement, l'application n'utilise pas la réflexion pour appeler les méthodes. – kenny

Répondre

13

Resharper possède une fonction de code propre et donne une bonne indication des méthodes/classes qui ne sont pas utilisées.

+0

Je ne sais pas si c'est automatisé ou non ... mais Resharper indique si une méthode a des références. –

4

Vous pouvez interroger votre base de code avec NDepend en utilisant CQL pour savoir quelles méthodes et classes ne sont pas utilisées.

+0

NDepend vous aidera encore plus loin dans la compréhension de la base de code en vous fournissant des informations sur les types les plus utilisés, les dépendances entre types, les dépendances directes et indirectes, la complexité mesurée des types et méthodes, etc. – flq

0

Première utilisation re-sharpper comme d'autres l'ont suggéré. Resharper suppose que les méthodes publiques sont utilisées quelque part par un assembly externe, même si elles ne le sont pas, alors recherchez et remplacez "public" par "private" et recompilez.

4

Attention au code qui est appelé par réflexion. Un grand nombre d'outils de refactoring signaleront que ce code n'est pas accessible alors qu'en fait ils le sont.

Le plus sûr est d'exécuter vos tests unitaires (vous les avez déjà correctement?) Avant et après le refactoring pour vous assurer que tout fonctionne toujours.

0

J'ai utilisé Gendarme (comme FxCop) pour déterminer quel code n'a pas été appelé. AFAIK il ne peut pas être automatisé, mais au moins vous n'avez pas besoin d'aller ligne par ligne.

Questions connexes