tz_logo

<- Cruml

thumbnail

Contexte

Ayant des connaissances en Crystal ainsi que les bases de l'UML, je n'avais trouvé aucune bibliothèque permettant de répondre à mes besoins, notamment pour générer un diagramme de classes. C'est la raison pour laquelle j'ai décidé de créer ma propre bibliothèque : Cruml.

Présentation

Cruml (pour Crystal + UML) est un outil qui génère automatiquement des diagrammes de classes à partir de code écrit en Crystal. Il permet de visualiser la structure des classes, modules et relations d'un projet. Cet outil facilite la documentation, l'analyse et la maintenance d'un projet. Vous pouvez consulter ce projet sur Github.

Comment cela fonctionne ?

Cruml réalise une analyse statique du code Crystal en s'appuyant sur l'API Transformer et l'AST (Abstract Syntax Tree) du compilateur. Cette analyse extrait les entités principales comme les classes, modules, méthodes, propriétés ainsi que certaines relations détectables telles que l'héritage, l'inclusion de modules et l'implémentation des classes.

Ensuite, les données extraites sont ensuite converties en un fichier au format D2, un langage déclaratif de diagrammes, puis rendues en SVG via le programme D2.

Avantages & inconvénients

L'avantage de cet outil, c'est qu'il le génère automatiquement à partir des fichiers Crystal. Ces derniers peuvent être sélectionnées via un fichier de configuration YML. Le fait de générer ce diagramme de classe permet aux développeurs de comprendre visuellement comment est représenté l'architecture du projet ainsi que les dépendances.

En revanche, l'inconvénient de Cruml, c'est qu'il ne peut pas capturer les métaprogrammations (tels que les macros) qui sont propres au langage Crystal. De plus, si les développeurs constatent qu'il y a des erreurs ou des incohérences sur le diagramme de classe, ils n'ont pas d'autres choix que de modifier le fichier D2 servant à générer un diagramme de classe. Enfin, Cruml a besoin de D2 pour générer un diagramme UML.

Pour le moment, Cruml est en phase de développement, il n'est pas finalisé pour le moment. Des éventuelles changements peuvent arriver.

Cas d'utilisation

Cruml est un outil qui peut être utile pour tous types de projets. Par exemple, lorsqu'on travaille en groupe, il peut être intéressant de présenter l'architecture du projet afin de comprendre comment cela fonctionne. Également, il peut être utilisé pour la documentation du projet.

Sources

Je vous invite à consulter le dépôt Github ainsi que les releases :