Analyse dynamique d’une application avec jtracert

Voici un outil qui va vous aider dans la compréhension d’un code et plus particulièrement du comportement dynamique de ce code.

Imaginez une nouvelle application dont vous êtes le nouveau responsable et qui n’est pas ou peu documentée (imaginez très fort 😉 ).

Cela peut être aussi une librairie externe dont vous voulez comprendre le fonctionnement ou mieux tracer l’exécution d’un bug.

Le constat est alors le suivant :

  • Il est relativement simple d’avoir une analyse statique du code (pour peu que l’on dispose du code source ou d’un bon décompilateur) et donc d’avoir un diagramme de classe d’une application.
  • Quid de l’analyse dynamique (diagramme de séquence) ?

Bien sûr on peut toujours lire le code et encore mieux l’executer en mode débug mais c’est extremement chronophage.

L’outil que je vous présente (jtracert http://code.google.com/p/jtracert/ ) va vous permettre de générer un diagramme de séquence à partir de l’exécution d’une application java SE ou EE.

S’il existait déjà quelques outils permettant de générer un diagramme de séquence à partir du code (Netbean UML permet de le faire mais uniquement pour une opération), il manquait l’outil capable de générer un diagramme de séquence (en respectant la notation UML) à partir de l’exécution d’un code.

L’outil est simple d’utilisation, il suffit de rajouter quelques paramètres à la JVM au lancement du serveur d’application

Par ex sous Tomcat, ajouter simplement la ligne suivante au fichier catalina.bat :

set JAVA_OPTS=-DanalyzerOutput=sdEditRtClient -DsdEditHost=127.0.0.1 -DsdEditPort=60001 -javaagent:"chemin librairie"\jTracert.jar=7007 %JAVA_OPTS%

Ensuite il faut lancer l’application de visualisation et les premiers diagrammes commencent à apparaître.

Bien sur il est possible de filtrer les classes intéressantes afin d’éviter de se retrouver avec un schéma énorme (une expression régulière permet de filtrer les classes).

On peut même éditer le diagramme (compléter les noms, ajouter des annotations, etc…).

Exemple de diagramme

imagebrowser image

Tout n’est pas parfait mais l’outil a le mérite d’exister et de fournir une alternative graphique à une stack trace.

Parmi les reproches on peut citer :

  • Un seul développeur actif sur le projet
  • Pas de possibilité d’exporter le schéma autre que HTML/PDF/GIF (Le format XMI aurait été très utile).