Graphiques et diagrammes


Doxygen dispose d'un support intégré pour générer des diagrammes d'héritage pour les classes en C++.

Doxygen peut utiliser l'outil « dot » de graphviz pour générer des diagrammes et des graphiques plus avancés. Graphviz est une boîte à outils de dessin de graphiques open source et multiplateforme et peut être trouvée sur https://www.graphviz.org/.

Si vous avez l'outil « dot » dans le path, vous pouvez définir HAVE_DOT sur YES dans le fichier de configuration pour permettre à Doxygen de l'utiliser.

Doxygen utilise l'outil « dot » pour générer les graphiques suivants :

  • Une représentation graphique de la hiérarchie des classes sera dessinée, ainsi que la représentation textuelle. Actuellement, cette fonctionnalité n'est prise en charge que pour HTML. Attention : lorsque vous avez une très grande hiérarchie de classes où de nombreuses classes dérivent d'une classe de base commune, l'image résultante peut devenir trop volumineuse pour être gérée par certains navigateurs.
  • Un graphique d'héritage sera généré pour chaque classe documentée montrant les relations d'héritage directes et indirectes. Cela désactive la génération des diagrammes d'héritage de classe intégrés.
  • Un graphique de dépendance d'inclusion est généré pour chaque fichier documenté qui inclut au moins un autre fichier. Cette fonctionnalité est actuellement prise en charge uniquement pour HTML et RTF.
  • Un graphique de dépendance d'inclusion inverse est également généré, indiquant pour un fichier (d'en-tête) quels autres fichiers l'incluent.
  • Un graphique est dessiné pour chaque classe et structure documentée qui montre :
    • les relations d'héritage avec les classes de base.
    • les relations d'utilisation avec d'autres structures et classes (par exemple, la class A a une variable membre m_a de type class B, alors A a une flèche vers B avec m_a comme étiquette).
  • Si CALL_GRAPH est défini sur YES, un graphique d'appel est dessiné pour chaque fonction, montrant les fonctions qu'elle appelle directement ou indirectement (voir également la section \callgraph et la section \hidecallgraph).
  • Si CALLER_GRAPH est défini sur YES, un graphique d'appelant est dessiné pour chaque fonction montrant les fonctions par lesquelles la fonction est appelée directement ou indirectement (voir aussi la section \callergraph et la section \hidecallergraph).
  • Si DIRECTORY_GRAPH est défini sur YES, Doxygen génère des graphiques qui montrent les dépendances de répertoire pour chaque répertoire. Le graphique affichera les répertoires sous forme de cases. Les sous-répertoires sont affichés imbriqués dans la case de son répertoire parent. La profondeur du graphique est configurée via DIR_GRAPH_MAX_DEPTH. Les dépendances d'inclusion entre les répertoires sont affichées sous forme de flèches.

À l'aide d'un fichier de mise en page, vous pouvez déterminer quels graphiques sont réellement affichés.

Les options DOT_GRAPH_MAX_NODES et MAX_DOT_GRAPH_DEPTH peuvent être utilisées pour limiter la taille des différents graphiques.

Les éléments des diagrammes de classes en HTML et RTF ont la signification suivante :

  • Une case jaune indique une classe. Une case peut avoir un petit marqueur dans le coin inférieur droit pour indiquer que la classe contient des classes de base qui sont cachées. Pour les diagrammes de classes, la largeur maximale de l'arbre est actuellement de 8 éléments. Si un arbre est plus large, certains nœuds seront cachés. Si la case est remplie d'un motif en pointillés, la relation d'héritage est virtuelle.
  • Une case blanche indique que la documentation de la classe est actuellement affichée.
  • Une case grise indique une classe non documentée.
  • Une flèche bleu foncé pleine indique l'héritage public.
  • Une flèche vert foncé en pointillés indique l'héritage protégé.
  • Une flèche vert foncé en pointillés indique l'héritage privé.

Les éléments du diagramme de classes dans latex ont la signification suivante :

  • Une case blanche indique une classe. Un marqueur dans le coin inférieur droit de la case indique que la classe a des classes de base qui sont cachées. Si la case a une bordure en pointillés, cela indique un héritage virtuel.
  • Une flèche pleine indique l'héritage public.
  • Une flèche en tirets indique l'héritage protégé.
  • Une flèche en pointillés indique l'héritage privé.

Les éléments des graphiques générés par l'outil dot ont la signification suivante :

  • Une case blanche indique une classe, une structure ou un fichier.
  • Une case avec une bordure rouge indique un nœud qui a plus de flèches que ce qui est affiché ! En d'autres termes : le graphique est tronqué par rapport à ce nœud. La raison pour laquelle un graphique est parfois tronqué est d'empêcher que les images ne deviennent trop grandes. Pour les graphiques générés avec dot, Doxygen essaie de limiter la largeur de l'image résultante à 1024 pixels.
  • Une case noire indique que la documentation de la classe est actuellement affichée.
  • Une flèche bleu foncé indique une relation d'inclusion (pour le graphique de dépendance d'inclusion) ou un héritage public (pour les autres graphiques).
  • Une flèche vert foncé indique un héritage protégé.
  • Une flèche rouge foncé indique un héritage privé.
  • Une flèche pointillée violette indique une relation « d'utilisation », le bord de la flèche est étiqueté avec la ou les variables responsables de la relation. La class A utilise la class B si la class A a une variable membre m de type C, où B est un sous-type de C (par exemple, C pourrait être B, B*, T<B>*).

Les éléments des graphiques de dépendances de répertoire ont la signification suivante :

  • Une case avec une bordure en gras indique le répertoire pour lequel le graphique de dépendances de répertoire a été généré.
  • Une case avec une bordure pleine rouge indique un répertoire dont les sous-répertoires ne sont pas affichés dans le graphique (« tronqué »). Pour configurer la profondeur des sous-répertoires affichés dans le graphique, voir DIR_GRAPH_MAX_DEPTH.
  • Une case avec une bordure en pointillé rouge indique un répertoire tronqué dont les répertoires parents ne sont pas non plus affichés dans le graphique.
  • Une case avec une bordure en pointillé autre que rouge indique que tous les sous-répertoires, sauf un au moins, ne sont pas affichés. Une case avec une bordure gris clair* indique un répertoire avec les deux attributs suivants :
    • Son répertoire parent n'est pas affiché.
    • Au moins un sous-répertoire est affiché.
  • Une case sans couleur d'arrière-plan indique un répertoire qui n'est pas un sous-répertoire des répertoires parents de l'origine qui sont affichés. L'origine est le répertoire pour lequel le graphique de dépendance de répertoire est affiché.
  • Une flèche entre deux cases indique une dépendance d'inclusion entre deux répertoires. La dépendance d'inclusion existe si un fichier d'un répertoire inclut un fichier d'un autre répertoire. Si un répertoire impliqué dans une dépendance d'inclusion n'est pas affiché dans le graphique, la flèche est attachée au premier répertoire parent affiché. Ce répertoire parent est affiché comme tronqué (voir ci-dessus).

Voici quelques fichiers d'en-tête qui montrent ensemble les différents diagrammes que Doxygen peut générer :

diagrams_a.h

#ifndef DIAGRAMS_A_H
#define DIAGRAMS_A_H
class A { public: A *m_self; };
#endif

diagrams_b.h

#ifndef DIAGRAMS_B_H
#define DIAGRAMS_B_H
class A;
classe B { public: A *m_a; };
#endif

diagrammes_c.h

#ifndef DIAGRAMMES_C_H
#define DIAGRAMMES_C_H
#include "diagrammes_c.h"
classe D;
classe C : public A { public: D *m_d; };
#endif

diagrammes_d.h

#ifndef DIAGRAMME_D_H
#define DIAGRAMME_D_H
#include "diagrammes_a.h"
#include "diagrammes_b.h"
classe C;
classe D : virtuelle protégée A, privée B { public: C m_c; };
#endif

diagrammes_e.h

#ifndef DIAGRAMME_E_H
#define DIAGRAMME_E_H
#include "diagrammes_d.h"
classe E : public D {};
#endif

Cliquez ici pour accéder à la documentation HTML correspondante générée par Doxygen. Notez que EXTRACT_ALL = YES est utilisé pour générer les diagrammes.