Détection du cycle de package Java: comment trouver les classes spécifiques impliquées? [fermé]

StackOverflow https://stackoverflow.com/questions/62276

Question

Quel outil recommanderiez-vous pour détecter les dépendances cycliques des packages Java , sachant que l'objectif est de lister explicitement les classes spécifiques impliquées dans le "cycle inter-packages" détecté ?

Je connais les classycle et JDepend , mais ils ne parviennent pas tous deux à répertorier les classes impliquées dans une dépendance de package cyclique. Les statistiques présentent une représentation graphique intéressante des cycles, mais elle est à nouveau limitée aux packages et très difficile à lire.

Je suis fatigué de recevoir un:

  

" vous avez une dépendance de cycle de package entre ces 3 packages
   vous avez xxx classes dans chacune
   bonne chance pour trouver les bonnes classes et briser ce cycle & ";

Connaissez-vous un outil qui demande une explication supplémentaire du pourquoi du cycle est détecté (c.-à-d. "lister les classes impliquées")?

Riiight ... Il est temps d'annoncer les résultats:

@ l7010.de: Merci pour l'effort. Je vous voterai (quand j'aurai assez de représentants), en particulier pour la réponse 'CAP' ... mais CAP est mort dans l'eau et n'est plus compatible avec mon Eclipse 3.4. Le reste est commercial et je ne cherche que des logiciels gratuits.

@ daniel6651: Merci, mais comme dit, uniquement du freeware (désolé de ne pas l'avoir mentionné en premier lieu).

@izb en tant qu'utilisateur fréquent de findbugs (avec la dernière version 1.3.5 actuellement), je suis à un clic pour accepter votre réponse ... si vous pouviez m'expliquer quelle option activer pour findbug à détecter n'importe quel cycle. Cette fonctionnalité n’est mentionnée que pour la version 0.8.7 en passant (cherchez ' Nouveau Détecteur de style pour trouver des dépendances circulaires entre les classes '), et je ne suis pas en mesure de le tester. Mise à jour: Cela fonctionne maintenant et j'avais un ancien fichier de configuration de findbugs dans lequel cette option n'était pas activée. J'aime toujours les CAD . bien que;)

LA RÉPONSE est ... voir ma propre (deuxième) réponse ci-dessous

Était-ce utile?

La solution

Findbugs peut détecter les dépendances de classe circulaires et possède également un plugin Eclipse.

http://findbugs.sourceforge.net/

Autres conseils

Bien ... après avoir testé DepFinder présenté ci-dessus , il s’avère que c’est excellent pour la détection rapide de dépendances simples, mais il ne s’adapte pas bien au nombre de classes ...

La RÉPONSE RÉELLE RÉELLE est donc: CDA - Analyseur de dépendance de classe

Il est rapide, à jour, facile à utiliser et fournit une représentation graphique des classes et de leurs dépendances circulaires. Un rêve devenu réalité;)

Vous devez créer un sous-projet dans lequel vous n'entrez que le répertoire de vos classes (.class) (il n'est pas nécessaire d'avoir un chemin de classe complet)

L'option & "; Détecter les dépendances circulaires - ALT - C &"; fonctionne comme une publicité et ne prend pas 100% de la CPU pendant des heures pour analyser mes 468 classes.
Remarque: pour actualiser un espace de travail, vous devez le rouvrir (!) Afin de déclencher un nouveau scan de vos classes.

capture d

Nous utilisons Sonar pour détecter les cycles de packages. Il trace un beau graphique des dépendances et indique celles qui vont dans la mauvaise direction. Vous pouvez même accéder à la source où la dépendance est utilisée.

Voir http: // www .sonarsource.org / combat-conception-érosion-par-cycles-avec-sonar /

Il existe également un Structure101 qui devrait le faire.

Highwheel détecte les cycles de classe et de package et rapporte la source des dépendances jusqu'à la classe / méthode / niveau de champ indiquant le type de relation (héritage, composition, partie d'une signature de méthode, etc.).

Il divise également les grands cycles en sous-éléments qui peuvent être compris / traités individuellement.

La sortie est en HTML avec un contenu SVG incorporé qui nécessite un navigateur moderne.

Et vous pouvez utiliser l'outil open source CAP , qui est un plugin Eclipse.

CAP a une vue graphique du paquet qui vous montrera les lignes pour les classes afin qu'après quelques clics (en fonction de la taille du cercle) vous trouverez le coupable.

Une première réponse possible est ... pas jolie. Mais il commence à faire ce que je suis après (Une meilleure solution est la présentée ci-dessous ).

Recherche de dépendances ! Téléchargez-le , décompressez-le.

Ce n'est pas le projet le plus moderne ni le plus actif à ce jour, mais si vous éditez [Recherche de dépendances] /bin/DependencyFinder.bat, ajoutez son chemin pour DEFAULT_DEPENDENCYFINDER_HOME, définissez un JAVA_HOME, vous pouvez le lancer.

Ensuite, vous cliquez sur le bouton "Extraire" (CTRL-E - premier bouton), entrez votre chemin d'accès aux classes et laissez-le balayer.

La difficulté consiste à cliquer exactement sur le bon ensemble d'éléments "éléments de programmation" et "fermetures" afin de ne pas être submergé par le niveau de détails dans le résultat.

  • Sélectionnez uniquement les "classes" dans la partie gauche ("éléments de programmation").
  • Sélectionnez uniquement les "classes" dans la partie droite ("fermetures").
  • Ajouter " / javax? ./,/org./ ,/sun./" comme modèle d'exclusion (pour les éléments de programmation et les fermetures).
  • Cliquez sur les roues (dernier bouton - Tout calculer - Ctrl + A ).

Et vous voilà.

Chaque fois que vous voyez '< - >' ', vous avez une belle dépendance cyclique . (Si vous sélectionnez "caractéristiques" du côté "fermeture", vous pouvez même savoir quelle fonction déclenche le cycle - génial.)

Je suis prêt à tester toute autre suggestion.

Il existe des outils commerciaux: Structure101 & amp; Lattix qui peut être utilisé à cette fin.

Le logiciel tomographe est l'un de ces outils. C’est commercial et l’UI craint: o

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