web-dev-qa-db-fra.com

Graphviz + Doxygen pour générer des diagrammes de classes UML

Je veux utiliser Graphviz + Doxygen pour générer un diagramme de classes basé sur du code C++. Cela fonctionne déjà car Doxygen est livré avec un support DOT natif; mais est-il possible de produire une sortie de type UML avec les modificateurs d'accès correspondants (public, privé, etc.), les types de retour et de paramètre de la classe méthodes similaires au schéma ci-dessous?

Je connais le thread Comment utiliser doxygen pour créer des diagrammes de classes UML à partir de la source C++ , mais cela ne répond pas à la question, cependant.

enter image description here

44
Eric

Créez le fichier source suivant example.cpp:

class Animal
{
  public:
    void die();
    string name;
    int age;
};

class Dog : public Animal
{
  public:
    void bark();
};

class Cat : public Animal
{
  public:
    void meow();
};

courir doxygen -g et modifiez les options suivantes du Doxyfile généré:

EXTRACT_ALL            = YES
HAVE_DOT               = YES
UML_LOOK               = YES

exécutez doxygen et regardez la sortie de la classe Animal, elle devrait être similaire à l'image ci-dessus, bien que doxygen n'affichera pas les types de retour des méthodes et des champs.

57
doxygen

J'avais un problème similaire résolu avec succès maintenant.

Voici les étapes (en supposant que vous utilisez la version GUI de Doxygen-Doxywizard)

  1. Cliquez sur le bouton Expert

  2. Allez dans l'onglet Dot et sélectionnez le DOT_PATH. Parcourez le dossier dans lequel vous avez installé le programme. par exemple, "C:/Program Files (x86) /Graphviz2.32/bin"

J'espère que ça aide, Anit

18
Ani

Essayez Doxygraph !

Doxygraph est une collection d'outils pour automatiser la rétro-ingénierie des diagrammes de classes UML à partir du code source de votre projet et les présenter sous forme d'applications Web interactives.

Il s'appuie sur Doxygen pour analyser votre code source et créer une représentation XML intermédiaire des informations qu'il recueille, il prend donc en charge tous les mêmes langages de programmation que Doxygen prend en charge: C, C++, C #, Objective C, Java, Python, PHP, Tcl, D, IDL, VHDL et Fortran.

Vous devez lire le README du projet cloné.

4
Lucien

Une solution possible pour atteindre votre résultat est d'utiliser plantuml , mais cela nécessite plus de travail sur la documentation.

2
kikeenrique