1 Extracteurs de documentation Génération de manuel de référence à partir du code source David Geldreich (DREAM)

Slides:



Advertisements
Présentations similaires
Un environnement de développement éducatif
Advertisements

ZOTERO logiciel de gestion bibliographique
Hiver 2010JGA Beaulieu GEF 243B Programmation informatique appliquée Structure de base des programmes en C.
GEF 243B Programmation informatique appliquée
1 1 Projet doption Réalité Virtuelle Simulation dun habitat domotisé Florent Renault Xiaoyu Gao Mercredi 27 mai 2009.
Introduction aux Web Services Partie 1. Technologies XML
Formation universitaire à .NET: Introduction à C#
Koha - Greenstone Symposium Koha Miramas 28 mai 2010
Etat d'avancement ORI-OAI Interaction avec les ENT.
Affichage interactif, bidimensionnel et incrémental de formules mathématiques Hanane Naciri et Laurence Rideau INRIA Sophia Antipolis CARI'2000.
A propos de java Sun, fin 1995 C++ nettoyé semi-interprété
Gestion des événements (suite)
Au programme du jour …. Ce que vous navez pas encore vu Constantes et variables de classe Main et Tests Utilisation de lAPI Existence des packages Existence.
Au programme du jour …. Introduction à lhéritage Un concept important de la programmation objet Livraison de code Organisation des répertoires et packages.
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
FR2 Leçons Les quantités.
Serveurs web pour JSP et Servlets
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
JXDVDTEK – Une DVDthèque en Java et XML
Guillaume KRUMULA présente Exposés Système et Réseaux IR3 Mardi 5 Février 2008.
Premiers pas avec Apache Ant Par Guillaume BITAUDEAU Le 16/10/2003.
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Exemple de compilation
version Beta Marie Calberg Ninni Louhelainen SLFN7
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
بسم الله الرحمن الرحيم. Institut Supérieure des Etudes Technologiques de Kébili.
Programmation par Objets et Java
Introduction aux Web Services Partie 1. Technologies HTML-XML
Outils de tests, logs et documentation Frédéric Moalannée 2010/2011 POO.
Page de garde Doc++ Maîtrise dinformatique Février 2002.
Page 1 Introduction à ATEasy 3.0 Page 2 Quest ce quATEasy 3.0? n Ensemble de développement très simple demploi n Conçu pour développer des bancs de test.
Collecte de données en ligne
Plugin B pour JEdit Matthias Meusburger Antoine Acquaviva
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
Chapitre 21 Collections Partie I Introduction Une collection : est un objet qui regroupe multiple éléments dans une unité. Une collection est.
Projet poker 1/56. Introduction Présentation de léquipe Cadre du projet Enjeux Choix du sujet 2.
Des outils pour le développement logiciel
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
5.1 URDL22005 Systèmes dexploitation Threads Vue dEnsemble Modèles de Multithreading Problèmes des Threads Pthreads Threads Windows XP Threads Linux Threads.
SIDENA BTS IRIS Session 2008 CARME Arnaud.
Développement d’application web
Développer en C avec Eclipse Introduction Création d'un projet Ajout de fichiers Compilation Exécution Utiliser le débogueur Département dinformatique.
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA.
1. 2 PLAN DE LA PRÉSENTATION - SECTION 1 : Code HTML - SECTION 2.1. : CSS (Méthode 1) - SECTION 2.2. : CSS (Méthode 2) - SECTION 3 : JavaScript - SECTION.
Microsoft .NET.
Ecaterina Giacomini Pacurar
Détection et correction des défauts de conception
Web dynamique PhP + MySQL AYARI Mejdi 2006
Java, les objets : tout de suite ! Rassembler, grouper les objets
Définition Utilisation Définition
How many of these flags do you recognise? Work with your partner to see if you know many – write them down - some will crop up shortly!
Projet de Master première année 2007 / 2008
99 Réutilisation du code grâce à l'héritage. 9-2 Objectifs À la fin de ce cours, vous serez capables de : Définir l'héritage Utiliser l'héritage pour.
Chapitre 3 Les bibliothèques de balises JSP et la JSTL
1111 Gestion des exceptions Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions.
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
‘‘Open Data base Connectivity‘‘
Introduction au langage PHP Licence Pro Cours Internet / Intranet Utilité Historique Exemples Fonctions PHP Classes.
Objectifs À la fin de ce cours, vous serez capables de :
La notion de type revisitée en POO
Projet SwitcHome Cahier des charges techniques Adeline COUPE, Hélène DRAUX, Ismaïla GIROUX, Loïc TACHET.
22 Visual Studio Tools et Office 2010 Thomas LEBRUN Architecte Access It Sebastien BOVO Application Dev Consultant Microsoft France
Doxygen. 2 Doxygen : qu’est-ce que c’est ? Système de documentation pour programmes –C++, Java, Objective-C, IDL –PHP, C# Génère automatiquement : –Html,
Tirer le meilleur parti d’Office /10/ Vincent Bippus IT/OIS 07 octobre 2014.
Formation ADBS – septembre 2014 – 1 Approfondir son expertise en recherche d'information 3-4 & 5 septembre 2014.
SciTools Understand A Source Code Analysis and Metrics Tool
(ref : Bray section pages 259 à 266)
1 Doxygen. 2 Doxygen : qu’est-ce que c’est ? Code C++, Java,... ● Un générateur de documentation – pour C + +, mais aussi C, Java, Fortran,... – Il fonctionne.
Transcription de la présentation:

1 Extracteurs de documentation Génération de manuel de référence à partir du code source David Geldreich (DREAM)

2 Plan Quoi ? Pourquoi ? Qui ? Quand ? Comment ? Où ? Javadoc Doxygen

3 Quoi ? Plusieurs niveaux de documentation Article scientifique Spécification, document de développement, architecture Manuel de référence Manuel utilisateur / tutoriaux Manuel dinstallation / compilation

4 Pourquoi ? Définir à qui sadresse la documentation que lon va écrire. Planning de développement : le temps passé à documenter ne lest pas à rajouter des fonctionnalités. Trouver léquilibre entre trop et pas assez de documentation. Besoins différents pendant et après le développement.

5 Qui ? Quand ? Qui ? Tout le monde doit documenter un minimum son code –Ne pas espérer que quelquun le fera à votre place –Ne pas confondre commentaire et manuel de référence Quand ? Deux extrêmes : –Tout documenter en même temps que lon rédige le code –Attendre la fin des développements Adopter une attitude intermédiaire

6 Comment ? Où ? Extraction automatique Garder synchrone code et documentation Une documentation obsolète est une documentation inutile Commentaires formatés Graphe de dépendance entre les classes, les fichiers Hiérarchie de classes

7 Des dizaines doutils Non commerciaux : AutoDOC, Autoduck, CcDoc, CppDoc, Cxref, cxxwrap, Cxx2HTML, C2HTML, Doc++, DocClass, Doxygen, DoxyS (Doxygen fork/spinoff), Epydoc, gtk-doc, HappyDoc, HeaderDoc, HTMLgen, HyperSQL, Javadoc, KDoc, Natural Docs, Perceps, phpDocumentor, PHPDoc, ReThree-C++, RoboDoc, ScanDoc, Synopsis, Tydoc, VBDOX Commerciaux : DocBuilder, DocJet, Doc-o-matic, ObjectManual, Together, CC-Rider, VBXC

8 Extracteur spécialisé java très simple. Produit du html en sortie javadoc -option1 -option2 nomDeFichier.java Javadoc /* Ceci est un commentaire ignoré par lextracteur */ // Cela aussi /**Cela est un commentaire javadoc */

9 Javadoc : position dans le source Seuls les items « public » et « protected » sont pris en compte dans loption par défaut /** Ceci est un commentaire de classe */ public class uneClasse { /** ceci est un commentaire de variable */ public int i; /** ceci est un commentaire de méthode */ public void uneMethode(); }

10 Javadoc : formatage du texte : HTML /** *To do list * * item one * item two * item three * */

11 Javadoc : les tagsles (classes, interfaces, methods and constructors (methods is a synonym added in Javadoc (classes and interfaces (classes and @serial or (see How and When To Deprecate APIs)

12 Javadoc : utilisation des tags /** * Registers the text to display in a tool tip. The text * displays when the cursor lingers over the component. * text the string to display. If the text is null, * the tool tip is turned off for this component. */ public void setToolTipText(String text) {

13 Javadoc : possibilité dextension -tag ou -taglet : permet de gérer de nouveaux tags Doclet Exemple de doclet : DocCheck ( javadoc -doclet com.sun.tools.doclets.doccheck.DocCheck -docletpath./doccheck1.2b2/doccheck.jar *.java Produire du PDF :

14 Javadoc : avantages et limites Mono langage Simple Cohérent avec les conventions Java Présentation HTML seulement Peut se lancer sur toute une hiérarchie Extensible avec les « doclets » pour d'autres formats de sorties

15 Doxygen Supporte C++, C, Java, Objective-C, Python, IDL (Corba et Microsoft) et dans certaines limites PHP, C#, and D. Tout Unix et Windows Sorties HTML, LaTeX, RTF, Man, XML, PerlMod, Aide Windows Inspiré de doc++ et de la documentation Qt Plus élaboré : fichier de configuration, wizard d'aide à la configuration génération de graphes avec graphviz/dot génération d'un moteur de recherche (pour site web avec PHP) possibilité de se lier à de la doc déjà générée par des fichiers.tag

16 Doxygen : utilisation Création d'un fichier de config : doxywizard doxygen -g myproj.doxy Édition du fichier de configuration : options commentées Génération de la doc : doxygen myproj.doxy Sous linux, pour une exécution rapide : nettoyer PATH et LD_LIBRARY_PATH

17 Doxygen : format des commentaires A la déclaration ou à la définition des fonctions Possibilité de fichier de documentation séparé HTML embarqué possible Des dizaines de tags/commands /** à la javadoc /*! à la Qt /// pour le C++

18 Doxygen : création de listes /*! * A list of events: * - mouse events * -# mouse move event * -# mouse click event\n * More info about the click event. * -# mouse double click event * - keyboard events * -# key down event * -# key up event * * More text here. */

19 Doxygen : grouper \ingroup, \defgroup, \addtogroup

20 Doxygen : utiliser des formules mathématiques Support des formules LaTeX Génération de l'image avec latex et gs Exemple: The distance between \f$(x_1,y_1)\f$ and \f$(x_2,y_2)\f$ is \f$\sqrt{(x_2-x_1)^2+(y_2-y_1)^2}\f$.

21 Doxygen : les graphes class graph include graph collaboration graph call graph

22 Doxygen : preprocessing ENABLE_PREPROCESSING = YES MACRO_EXPANSION = YES EXPAND_ONLY_PREDEF = YES PREDEFINED = __declspec(x)=

23 Doxygen : reverse engineering EXTRACT_ALL = YES EXTRACT_PRIVATE = YES EXTRACT_STATIC = YES SOURCE_BROWSER = YES INLINE_SOURCES = YES CLASS_DIAGRAMS = YES HIDE_UNDOC_RELATIONS = NO HAVE_DOT = YES CLASS_GRAPH = YES COLLABORATION_GRAPH = YES INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = YES DIRECTORY_GRAPH = YES

24 Conclusion Lextracteur de doc ne documente pas à votre place Comme il y a des règles de codage, il faut définir des règles de documentation Le manuel de référence nest pas le seul manuel à produire