2010-03-02 7 views
7

J'ai un projet Java sur lequel je travaille depuis un moment. La conception a commencé plutôt bien mais s'est lentement dégradée au fur et à mesure des changements. Je suis à la recherche d'une sorte d'outil qui permettra d'analyser le projet. Ce serait vraiment bien d'avoir une carte des dépendances des différentes classes/méthodes. J'ai l'impression que certaines méthodes ne sont là que pour atteindre un objectif très précis. Je voudrais éliminer le code inutile et améliorer mon design.Carte des dépendances pour les classes et méthodes Java

Toutes les suggestions seraient super! Merci!

+0

Beaucoup de grandes réponses! Merci de votre aide! – Ryan

+0

Cela n'a rien à voir, mais l'outil UML Umbrello va générer des diagrammes UML de votre code. Cela aurait été utile pour moi à ce moment-là. – Ryan

+0

Je viens de le remarquer en raison de votre récent commentaire, mais pour référence future, vous pouvez consulter Structure101. –

Répondre

5

Vous pouvez vérifier JDepend. Il a été spécifiquement développé pour résoudre le problème auquel vous êtes confronté.

Travaillant en tant que consultant, il m'est très courant d'être impliqué dans une énorme base de code héritée. Typiquement, la première chose que je fais est de lancer JDepend pour essayer de comprendre le code de base et toutes les dépendances.

Bonne chance.

+1

JDepend fournit uniquement des dépendances entre les packages, et non des classes et des méthodes –

-1

Jetez un oeil à Apache Ivy

+0

Ivy n'est pas un mauvais gestionnaire de dépendances mais il ne répond pas à sa question, il cherche quelque chose qui va analyser ses dépendances de projets existants. – Matt

1

Doxygen peut aider, en particulier avec des représentations graphiques des dépendances entre les classes et méthodes.

1

Ce n'est pas une réponse parfaite, mais cela peut être utile pour des vérifications rapides. Si vous utilisez Eclipse pour votre développement, vous pouvez afficher le graphique d'appel d'une méthode en sélectionnant son nom et en appuyant sur Ctrl-Alt-H (ou cliquez avec le bouton droit et sélectionnez «Ouvrir la hiérarchie des appels»). Vous pouvez utiliser la vue qui s'ouvre pour voir ce qui appelle la méthode et les méthodes appelées par la méthode.

+0

Cela aide beaucoup en réalité. Merci! – Ryan

1

Il existe plusieurs bons analyseurs pour Java. J'ai joué avec PMD jusqu'ici et j'ai eu une bonne chance avec ça.

1

Vous pouvez également essayer FindBugs. Aide beaucoup avec ces et beaucoup d'autres problèmes.

1

De nombreux outils sont disponibles pour cela, en fonction de la taille de votre système. Le grand-père de tous est Structure101, un produit commercial.

http://structure101.com

Je l'ai utilisé cela sur quelques grands projets - c'est complexe mais facile à tous le plus complet des outils que je connais. Il peut représenter graphiquement une architecture énorme et vous permettre de démêler certaines choses complexes. Il a un produit soeur appelé reStructure101 où vous pouvez faire des scénarios de simulation.

Un bon concurrent est Stan4j. Il est loin d'être aussi complet, mais fait quelques trucs mieux, montrant en particulier le contexte de dépendance au niveau de la classe.

http://www.stan4j.com

(je possède les deux produits, mais ont aucune affiliation commerciale soit)

Une autre façon de voir les dépendances complexes, en particulier au niveau du projet, est une matrice de structure de dépendance (DSM).Bien que S101 peut faire un DSM, Lattix a plus de soutien - il peut gérer les dépendances Spring et Hibernate:

http://lattix.com/

(je ne l'ai pas utilisé lattix - ils le rendent trop difficile à évaluer, ce qui est bizarre parce que Je travaille sur certains très grands systèmes)

Si votre logiciel est assez petite, et vous êtes plus intéressé par simple niveau de la classe, alors quelque chose comme Architexa peut vous aider à comprendre la structure mieux:

http://www.architexa.com/

Enfin, si vous voulez rouler le vôtre, vous pouvez facilement le faire avec ASM. Il inclut même un outil de matrice de dépendance qui suit au niveau du package:

http://asm.ow2.org/doc/tutorial-asm-2.0.html (voir en bas de la page pour la matrice de dépendance nify)

est ici la source - il est très simple, mais intelligent. Cela fonctionne hors bytecodes. http://cvs.forge.objectweb.org/cgi-bin/viewcvs.cgi/asm/asm/examples/dependencies/src/org/objectweb/asm/depend/

Questions connexes