53 votes

Comment obtenir doxygen pour produire des graphiques d'appels et d'appelants pour les fonctions c

J'ai passé du temps à examiner la documentation et à parcourir mon fichier de configuration doxy du début à la fin. J'ai lancé doxygen sur mon fichier de configuration et il produit de la documentation et des indices pour les structs et classes cpp mais je ne vois pas les graphes d'appel ou d'appelant pour la multitude de fonctions c dans mon arborescence source.

Est-ce que quelqu'un peut me dire comment configurer doxygen pour produire ces arbres d'appels et d'appelants ? J'ai bien installé graphviz.

1 votes

Pouvez-vous s'il vous plaît ajouter la sortie de doxygen

61voto

pezcode Points 2596

Vous devez définir HAVE_DOT, CALL_GRAPH et CALLER_GRAPH sur YES. Assurez-vous également que le chemin de dot est dans votre variable PATH.

Si cela ne fonctionne toujours pas, vous devrez peut-être définir EXTRACT_ALL et/ou EXTRACT_STATIC, en fonction de vos fonctions.

0 votes

Désolé, j'ai bien HAVE_DOT, CALL_GRAPH et CALLER_GRAPH définis à YES. Par "variable PATH", je suppose que vous voulez dire dans mon shell car il n'y en a pas dans mon fichier de configuration doxy. Oui, dot est dans mon chemin (c'est-à-dire que 'which dot' fonctionne). Je n'avais pas défini EXTRACT_ALL ou EXTRACT_STATIC. D'après les commentaires, il ne semble pas que cela soit pertinent, mais j'essaie maintenant. Merci pour votre réponse.

1 votes

Si, pour une raison quelconque, Doxygen ne trouve pas dot, vous pouvez définir manuellement le chemin via DOT_PATH dans votre Doxyfile.

0 votes

Cela a également fonctionné pour moi. Je suis déçu que les développeurs de Doxygen n'aient pas réfléchi de manière plus attentive aux valeurs de configuration par défaut.

12voto

Azhar hussain Points 61

Pour les utilisateurs de MacOS :

Installez Doxygen et Graphviz comme suit :

brew install doxygen
brew install graphviz

Allez dans le dossier de votre projet, et depuis Terminal, réglez ce chemin et exécutez

doxygen -g

Un fichier doxygen sera généré, nommé Doxyfile. Ouvrez ce fichier dans n'importe quel éditeur et trouvez ces paramètres et remplacez leurs valeurs par YES à leurs emplacements :

HAVE_DOT               = YES
EXTRACT_ALL            = YES
EXTRACT_PRIVATE        = YES
EXTRACT_STATIC         = YES
CALL_GRAPH             = YES
CALLER_GRAPH           = YES
DISABLE_INDEX          = YES 
GENERATE_TREEVIEW      = YES
RECURSIVE              = YES

Vous pouvez également définir le nom de votre projet dans ce Doxyfile. Enregistrez le fichier puis exécutez cette commande dans le terminal :

doxygen Doxyfile

Cela générera deux autres dossiers nommés html et latex. Allez dans le dossier html et ouvrez annotated.html pour voir tous les détails de votre projet. Vous verrez également des images png des graphiques d'appel intégrés dans le html qui sont pertinents (pour certaines fonctions/classes par exemple).

6voto

kikeenrique Points 1160

Doxywizard est également utile. Il vous donne toutes les options dans une interface graphique. Sélectionner une option affiche une aide rapide sur cette option.

Vous pourriez également être intéressé par COLLABORATION_GRAPH ou GRAPHICAL_HIERARCHY.

Assez pratique.

0 votes

Génial! Je les ai trouvés sous Expert->Dot dans doxywizard. Il a fallu activer HAVE_DOT d'abord.

6voto

mckillip Points 51

Définir le chemin d'accès à "dot" (/usr/local/bin/) via les commandes de l'onglet "Expert" dans l'interface graphique a fonctionné!

1voto

user1283704 Points 613

J'ai rencontré le même problème pour mes fonctions globales C. Activer CLANG_ASSISTED_PARSING a permis d'afficher des callgraphs pour certaines fonctions, mais pas pour toutes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X