2010-02-11 2 views
9

Je dois nettoyer un ancien projet et les connaissances générales sont que le projet contient beaucoup de code inutilisé que nous pourrions supprimer. Cela permettrait d'économiser des maux de tête et de faciliter la maintenance.Trouver du code inutilisé dans un projet modulaire Maven

J'ai trouvé le plugin Eclipse Core Tools qui ressemble à un excellent outil, mais dans notre cas, nous avons un projet Maven2 qui est divisé en 3 modules. Je n'arrive pas à lancer le "trouver des membres non référencés" sur le projet parent, et quand je l'exécute sur l'un des modules, il ignore complètement le fait que d'autres modules utilisent peut-être certains des membres publics.

Quelqu'un a-t-il surmonté ce problème? Ou trouvé une autre façon d'y arriver?

Merci.

Répondre

9

quand je le lance sur l'un des modules, il ignore complètement le fait que d'autres modules pourraient utiliser certains des membres du public ...

Oui, c'est le problème, et c'est pourquoi il Il n'y a pas de véritable moyen déterministe de trouver du code inutilisé comme le rappelle @cletus au this previous answer.

Après avoir dit que, des outils tels que PMD (et sa unusedcode règle), Findbugs peut aide de toute façon. IDE comme IntelliJ (les inspections de code Java sont entièrement disponibles dans l'édition de la Communauté) et Eclipse a également un bon support pour cela.

Pour IntelliJ, un coup d'oeil à Global unused declaration inspection:

Merci à l'amélioration des indices internes derrière le moteur de connaissance du code IntelliJ IDEA, Maia sera en mesure de mettre en évidence instantanément des classes Java, les méthodes et les champs qui sont inutilisé sur l'ensemble du projet.

Pour Eclipse, il y a le plugin UCDetector:

UCDetector (unecessary code détecteur) est un logiciel libre éclipse PlugIn outil pour trouver unecessary (mort) code java public. Il essaie également de rendre le code final, protégé ou privé.

alt text http://www.ucdetector.org/images/popup.png

Mais je vous avoue que je ne suis pas sûr si l'une de ces solutions va vraiment travailler tous les modules. Dans ce cas, ma suggestion serait de mettre tout le code dans un projet de "concierge" (ouais, c'est moche mais bien ...) et de faire fonctionner les outils dessus (et de nettoyer les modules en fonction des résultats obtenus).

+0

C'est une réponse très agréable et détaillée.Merci Pascal. – Lancelot

+0

@Lancelot De rien. Bonne chance! –

1

J'ai utilisé le plugin Core Tools pour trouver du code inutilisé dans plusieurs modules maven différents. Le chemin de compilation pour chacun des projets doit être configuré correctement afin qu'Eclipse sache qu'il existe des dépendances entre les projets. Si vous importez les projets en utilisant le plugin m2eclipse, il les configurera automatiquement.

Je pense que la façon dont le plugin Core Tools fonctionne est qu'il automatise le processus que la vue "Call Hierarchy" effectue. Sélectionnez une méthode et exécutez "Call Hierarchy" (ctrl-alt-H) s'il n'y a pas d'appelant, Core Tools devrait marquer la méthode comme non appelée.

Questions connexes