Download Support du cours
Transcript
Outils de génération de documentation Ecole ENVOL 2010 F. Langrognet Laboratoire de Mathématiques de Besançon F. Langrognet () Génération de documentation ENVOL 2010 1 / 49 PLAN 1 Introduction 2 Comment ça marche ? Sur quels types de fichiers ? Pour quelles sorties ? 3 Un exemple détaillé : Doxygen Fiche d’identité Balises Exemples Diagrammes et graphes Personnalisation des sorties 4 Pour aller plus loin ... F. Langrognet () Génération de documentation ENVOL 2010 2 / 49 PLAN 1 Introduction 2 Comment ça marche ? Sur quels types de fichiers ? Pour quelles sorties ? 3 Un exemple détaillé : Doxygen Fiche d’identité Balises Exemples Diagrammes et graphes Personnalisation des sorties 4 Pour aller plus loin ... F. Langrognet () Génération de documentation ENVOL 2010 3 / 49 Introduction Introduction Objectif Générer automatiquement (ou presque...) une documentation technique Pour qui ? Tous les développeurs Y compris moi ! Historique 1995-1997 : 1ers outils de génération : ◮ javadoc, ROBODoc (1995) ◮ Doxygen (1997) F. Langrognet () Génération de documentation ENVOL 2010 4 / 49 Exemples Java SDK (javadoc) F. Langrognet () Génération de documentation ENVOL 2010 5 / 49 Exemples NetBeans (javadoc) F. Langrognet () Génération de documentation ENVOL 2010 6 / 49 Exemples KDE (Doxygen) F. Langrognet () Génération de documentation ENVOL 2010 7 / 49 Caractéristiques - Fonctionnalités Caractéristiques Formats d’entrée Code source (texte) Binaire Fonctionnalités ’avancées’ Formats de sortie Diagrammes (classes, appels, . . . ) HTML Possibilité d’étendre à d’autres langages PDF Latex Personnalisation des sorties ps ... XML man pages RTF DocBook F. Langrognet () Génération de documentation ENVOL 2010 8 / 49 PLAN 1 Introduction 2 Comment ça marche ? Sur quels types de fichiers ? Pour quelles sorties ? 3 Un exemple détaillé : Doxygen Fiche d’identité Balises Exemples Diagrammes et graphes Personnalisation des sorties 4 Pour aller plus loin ... F. Langrognet () Génération de documentation ENVOL 2010 9 / 49 PLAN 1 Introduction 2 Comment ça marche ? Sur quels types de fichiers ? Pour quelles sorties ? 3 Un exemple détaillé : Doxygen Fiche d’identité Balises Exemples Diagrammes et graphes Personnalisation des sorties 4 Pour aller plus loin ... F. Langrognet () Génération de documentation ENVOL 2010 10 / 49 Sur quels types de fichiers ? Fichier binaire Documentation générée à partir des binaires Exemple : classDoc pour java à partir des .class ou .jar Fichier source Documentation générée à partir du code source Grammaire du langage Balises spécifiques F. Langrognet () Génération de documentation ENVOL 2010 11 / 49 Sur quels types de fichiers ? La documentation peut ainsi être générée sans aucun effort (sans balise spécifique) Un des meilleurs outils Résultat/Effort Mais ... des commentaires (balises) améliorent la qualité de la documentation F. Langrognet () Génération de documentation ENVOL 2010 12 / 49 Sur quels types de fichiers ? La documentation peut ainsi être générée sans aucun effort (sans balise spécifique) Un des meilleurs outils Résultat/Effort Mais ... des commentaires (balises) améliorent la qualité de la documentation F. Langrognet () Génération de documentation ENVOL 2010 12 / 49 Exemple sans balise Date.h F. Langrognet Documentation générée (html) () Génération de documentation ENVOL 2010 13 / 49 PLAN 1 Introduction 2 Comment ça marche ? Sur quels types de fichiers ? Pour quelles sorties ? 3 Un exemple détaillé : Doxygen Fiche d’identité Balises Exemples Diagrammes et graphes Personnalisation des sorties 4 Pour aller plus loin ... F. Langrognet () Génération de documentation ENVOL 2010 14 / 49 Pour quelles sorties ? Quelles informations ? Prototype de fonctions Classes Graphes d’appels Diagrammes (de classses, de collaboration, . . .) Liens vers les fichiers sources ... Format des fichiers de sortie Différents formats (en fonction des possibilités de l’outil) : html, pdf, latex, ps, XML, . . . Personnalisation possible des sorties F. Langrognet () Génération de documentation ENVOL 2010 15 / 49 PLAN 1 Introduction 2 Comment ça marche ? Sur quels types de fichiers ? Pour quelles sorties ? 3 Un exemple détaillé : Doxygen Fiche d’identité Balises Exemples Diagrammes et graphes Personnalisation des sorties 4 Pour aller plus loin ... F. Langrognet () Génération de documentation ENVOL 2010 16 / 49 PLAN 1 Introduction 2 Comment ça marche ? Sur quels types de fichiers ? Pour quelles sorties ? 3 Un exemple détaillé : Doxygen Fiche d’identité Balises Exemples Diagrammes et graphes Personnalisation des sorties 4 Pour aller plus loin ... F. Langrognet () Génération de documentation ENVOL 2010 17 / 49 Doxygen - Fiche d’identité Auteur : Dimitri Van Heesch 1re version : 1997 OS : BSD, Linux, Mac OS, Unix, Windows Entrée : code source Sorties : HTML, LATEX, Man Pages, RTF, XML, Qt Help Project, PDF, PS, . . . Nombreuses possibilités de personnalisation Intégré dans de nombreux outils (KDevelop, cmake, . . . ) Documentation KDE F. Langrognet () Génération de documentation ENVOL 2010 18 / 49 Pour quels langages ? Langages F. Langrognet () Génération de documentation ENVOL 2010 19 / 49 Comment utilise t-on Doxygen (1) ? En ligne de commande Directement : $ doxygen *.h Via un fichier de configuration : $ doxygen -g my_config.txt $ kate my_config.txt $ doxygen my_config.txt F. Langrognet () Génération de documentation ENVOL 2010 20 / 49 Comment utilise t-on Doxygen (2) ? GUI Exemple : DoxyWizard pour configurer et lancer doxygen Configuration Formats de sorties F. Langrognet () Génération de documentation Types de sorties ENVOL 2010 21 / 49 PLAN 1 Introduction 2 Comment ça marche ? Sur quels types de fichiers ? Pour quelles sorties ? 3 Un exemple détaillé : Doxygen Fiche d’identité Balises Exemples Diagrammes et graphes Personnalisation des sorties 4 Pour aller plus loin ... F. Langrognet () Génération de documentation ENVOL 2010 22 / 49 Balises Balises à l’intérieur des commentaires Les balises sont incluses dans les commentaires interprétables par Doxygen En C/C++ : Style C avec avec deux * /** * Documentation pour doxygen */ Style C++ avec avec trois / /// /// Documentation pour doxygen /// Style C avec avec un ! /* ! * Documentation pour doxygen */ Style C++ avec avec un ! // ! // !Documentation pour doxygen // ! F. Langrognet () Génération de documentation ENVOL 2010 23 / 49 Balises Balises \file Description d’un fichier source ou d’en-tête \brief Description courte (peut être complétée par un lien vers la description détaillée) Description de paramètre(s) d’une fonction (/méthode) \return Description de la valeur retournée \bug \author Description d’un bug Auteur(s) \deprecated \version Description d’une partie de code obsolète Version \class \date Description d’une classe Date F. Langrognet \param () Génération de documentation ENVOL 2010 24 / 49 PLAN 1 Introduction 2 Comment ça marche ? Sur quels types de fichiers ? Pour quelles sorties ? 3 Un exemple détaillé : Doxygen Fiche d’identité Balises Exemples Diagrammes et graphes Personnalisation des sorties 4 Pour aller plus loin ... F. Langrognet () Génération de documentation ENVOL 2010 25 / 49 Doxygen - Exemples Informations sur les fichiers d’en-tête F. Langrognet () Génération de documentation ENVOL 2010 26 / 49 Informations d’en-tête (1) Sans balise doxygen F. Langrognet () Avec balises d’en-tête doxygen Génération de documentation ENVOL 2010 27 / 49 Informations d’en-tête (2) Balises d’en-tête F. Langrognet () Génération de documentation ENVOL 2010 28 / 49 Doxygen - Exemples Description courte / détaillée F. Langrognet () Génération de documentation ENVOL 2010 29 / 49 Description courte / détaillée (1) Description courte / détaillée On peut avoir : une description courte (\brief) une description détaillée (sans balise) F. Langrognet () Génération de documentation ENVOL 2010 30 / 49 Description courte / détaillée (2) Description courte / détaillée On peut aussi générer automatiquement la description courte à partir de la description détaillée (option JAVADOC_AUTOBRIEF à YES). La description courte s’arrête au 1er point trouvé dans la description détaillée. F. Langrognet () Génération de documentation ENVOL 2010 31 / 49 Doxygen - Exemples Description d’une méthode / fonction F. Langrognet () Génération de documentation ENVOL 2010 32 / 49 Description d’une méthode / fonction (1) Utilsation de \param et \return. F. Langrognet () Génération de documentation ENVOL 2010 33 / 49 Description d’une méthode / fonction (2) F. Langrognet () Génération de documentation ENVOL 2010 34 / 49 PLAN 1 Introduction 2 Comment ça marche ? Sur quels types de fichiers ? Pour quelles sorties ? 3 Un exemple détaillé : Doxygen Fiche d’identité Balises Exemples Diagrammes et graphes Personnalisation des sorties 4 Pour aller plus loin ... F. Langrognet () Génération de documentation ENVOL 2010 35 / 49 Diagrammes de classes (1) Fonctionnement par défaut Hiérarchie de classes F. Langrognet () Génération de documentation ENVOL 2010 36 / 49 Diagrammes de classes (2) Personnalisation Avec le logiciel graphviz (et l’option HAVE_DOT=YES) Hiérarchie de classes Diagramme de collaboration F. Langrognet () Génération de documentation ENVOL 2010 37 / 49 Diagrammes de classes (3) Autre exemple F. Langrognet () Génération de documentation ENVOL 2010 38 / 49 Graphes d’appels Graphes d’appels (et l’option CALL_GRAPH=YES) Graphes d’appelants (et l’option CALLER_GRAPH=YES) F. Langrognet () Génération de documentation ENVOL 2010 39 / 49 PLAN 1 Introduction 2 Comment ça marche ? Sur quels types de fichiers ? Pour quelles sorties ? 3 Un exemple détaillé : Doxygen Fiche d’identité Balises Exemples Diagrammes et graphes Personnalisation des sorties 4 Pour aller plus loin ... F. Langrognet () Génération de documentation ENVOL 2010 40 / 49 Personnalisation des sorties (1) Sortie HTML Exemple de personnalisation : $ doxygen -w html header.html footer.html customdoxygen.css Feuille de style En-tête Pied de page F. Langrognet () Génération de documentation ENVOL 2010 41 / 49 Personnalisation (2) Disposition des sorties DoxygenLayout.xml Création d’un fichier layout : $ doxygen -l Edition du fichier DoxygenLayout : $ kate DoxygenLayout.xml Edition du fichier de configuration (LAYOUT_FILE = DoxygenLayout.xml) : $ kate config.txt Execution de doxygen : $ doxygen config.txt F. Langrognet () Génération de documentation ENVOL 2010 42 / 49 PLAN 1 Introduction 2 Comment ça marche ? Sur quels types de fichiers ? Pour quelles sorties ? 3 Un exemple détaillé : Doxygen Fiche d’identité Balises Exemples Diagrammes et graphes Personnalisation des sorties 4 Pour aller plus loin ... F. Langrognet () Génération de documentation ENVOL 2010 43 / 49 Quel outil de génération de documentation choisir ? Quel langage ? F. Langrognet () Génération de documentation ENVOL 2010 44 / 49 Quel outil de génération de documentation choisir ? Quel langage ? ... suite F. Langrognet () Génération de documentation ENVOL 2010 45 / 49 Quel outil de génération de documentation choisir ? Quel OS ? F. Langrognet () Génération de documentation ENVOL 2010 46 / 49 Quel outil de génération de documentation choisir ? Format de sortie F. Langrognet () Génération de documentation ENVOL 2010 47 / 49 Références Quelques références Comparaison des outils de génération de documentation : en.wikipedia.org/wiki/Comparison_of_documentation_generators Doxygen : ◮ Doxygen (officiel) : ◮ Manuel d’utilisation Doxygen : ◮ Wikipedia : ◮ Initialtion à Doxygen pour le C++ : www.stack.nl/ dimitri/doxygen/ www.stack.nl/ dimitri/doxygen/manual.html fr.wikipedia.org/wiki/Doxygen franckh.developpez.com/tutoriels/outils/doxygen/ javadoc ◮ officiel : ◮ Wikipedia : download.oracle.com/javase/1.5.0/docs/tooldocs/windows/javadoc.html fr.wikipedia.org/wiki/Javadoc F. Langrognet () Génération de documentation ENVOL 2010 48 / 49 Outils de génération de documentation FIN Merci de votre attention Florent Langrognet F. Langrognet () Génération de documentation ENVOL 2010 49 / 49