Doxygen: Source Code Documentation Generator John Tully.

Slides:



Advertisements
Similar presentations
Kausik Datta Interra Systems India Pvt. Ltd.
Advertisements

Doxygen. Links
DOCUMENT TYPES. Digital Documents Converting documents to an electronic format will preserve those documents, but how would such a process be organized?
Documentation Generators: Internals of Doxygen John Tully.
CS282.  Doxygen is a documentation generator for ◦ C++, C, C#, Java, Objective-C, Python, PHP, …  Doxygen will document your code according to the “tags”
Server-Side vs. Client-Side Scripting Languages
Copyright © 2006 by The McGraw-Hill Companies, Inc. All rights reserved. McGraw-Hill Technology Education Copyright © 2006 by The McGraw-Hill Companies,
University of Southern California Center for Systems and Software Engineering 1 © USC-CSSE Unified CodeCounter (UCC) with Differencing Functionality Marilyn.
1 Introduction to Software Engineering Lecture 42 – Communication Skills.
Outline IS400: Development of Business Applications on the Internet Fall 2004 Instructor: Dr. Boris Jukic Server Side Web Technologies: Part 2.
Thinking inside the box 26 June 2003 Soar Workshop - Slide 1 © 2003 Soar Technology, Inc. Thinking… …inside the box SoarDoc Presented on Thursday, 26 June.
Scripting Languages. Originally, a script was a file containing a sequence of commands that needed to be executed Control structures were added to make.
The Basic Tools Presented by: Robert E., & Jonathan Chase.
Doxygen and Javadoc By Derzsy Noemi.
Concordia University Department of Computer Science and Software Engineering Click to edit Master title style ADVANCED PROGRAMING PRACTICES API documentation.
1 Introduction to Tool chains. 2 Tool chain for the Sitara Family (but it is true for other ARM based devices as well) A tool chain is a collection of.
AIT 616 Fall 2002 PHP. AIT 616 Fall 2002 PHP  Special scripting language used to dynamically generate web documents  Open source – Free!!!  Performs.
Project Source Code Structure and Build Process ● Remember consistency matters as source code structure, build process, and release processes are all intertwined.
INTERNET APPLICATION DEVELOPMENT For More visit:
CENT 305 Information Systems Security Linux Introduction.
1 Doxygen National University of Kaohsiung Department of Applied Mathematics Yu-Kai Hong, Chien-Hsiang Liu, Wei-Ren Chang February, 2008.
JavaDoc1 JavaDoc DEPARTMENT OF COMPUTER SCIENCE AND SOFTWARE ENGINEERING CONCORDIA UNIVERSITY July 24, 2006 by Emil Vassev & Joey Paquet revision 1.2 –
The Basics of Javadoc Presented By: Wes Toland. Outline  Overview  Background  Environment  Features Javadoc Comment Format Javadoc Program HTML API.
A brief introduction to javadoc and doxygen Cont’d.
Program documentation Using the Doxygen tool Program documentation1.
Short Status Report: Documentation Geant4 Workshop at Noorwijk 4 October, 2010 Dennis Wright (for Katsuya Amako)
L. Mancera IT/API LCG SPI project: Code documentation1 Code Documentation Luis Mancera LCG Software Process & Infrastructure (CERN, 10/23/02)
FLUKA GUI Status FLUKA Meeting CERN, 10/7/2006.
1Computer Sciences Department Princess Nourah bint Abdulrahman University.
Javadoc: Advanced Features & Limitations Presented By: Wes Toland.
Introduction to Web Programming. Introduction to PHP What is PHP? What is a PHP File? What is MySQL? Why PHP? Where to Start?
Computational Boot Camp HTML Mike Schaffer. 8/23/2002 (MES) HTML What is HTML? HTML stands for HyperText Markup Language HTML is the language for publishing.
Javadoc A very short tutorial. What is it A program that automatically generates documentation of your Java classes in a standard format For each X.java.
Javadoc Dwight Deugo Nesa Matic
JavaDoc and Contracts Spring Documenting Contracts with JavaDoc Contract model for methods Preconditions Postconditions JavaDoc Industry standard.
ASP (Active Server Pages) by Bülent & Resul. Presentation Outline Introduction What is an ASP file? How does ASP work? What can ASP do? Differences Between.
CSE IntroductiontoDoxygen. Contents Introduction Main Steps for creating documentation Examples.
TCL TK. Tcl/Tk C functions can become Tcl commands that are invoked interactively Tk = scriptable, portable user interface –Windows, X (Unix), MacOS,
July Doxygen A Code Documentation System Doxygen generates documentation directly from the structure and comments in the code –Browsable HTML documentation.
Doxygen Documentation
 A PHP script can be placed anywhere in the document.  A PHP script starts with  The default file extension for PHP files is ".php".  A PHP file normally.
THE WEB CALENDAR PROJECT Presented by: Jasmine Thomas Supervisor: John Ebden.
Java Programming: Advanced Topics1 Introduction to Advanced Java Programming Chapter 1.
8 th Semester, Batch 2009 Department Of Computer Science SSUET.
 Before you continue you should have a basic understanding of the following:  HTML  CSS  JavaScript.
©John Samuel 2008 Introduction to PHP Note: These slides are not included in coverage for the BIF703 final exam...
Dr. Abdullah Almutairi Spring PHP is a server scripting language, and a powerful tool for making dynamic and interactive Web pages. PHP is a widely-used,
Copyright © 2006 by The McGraw-Hill Companies, Inc. All rights reserved. McGraw-Hill Technology Education Chapter 13 A & B Programming Languages and the.
PHP Tutorial. What is PHP PHP is a server scripting language, and a powerful tool for making dynamic and interactive Web pages.
20-753: Fundamentals of Web Programming Copyright © 1999, Carnegie Mellon. All Rights Reserved. 1 Lecture 15: Java Basics Fundamentals of Web Programming.
PHP stands for …….. “PHP Hypertext Pre-processor” and is a server-side scripting language like ASP. PHP scripts are executed on the server PHP supports.
Presented By P.SRIVIDYA 085D1A0552 Programming Language.
Code Documentation & Doxygen Issa Mahasneh servit Open Source Solutions
1 Doxygen. 2 Doxygen: What is it ? ● A documentation generator – for C++, C, Java, Objective-C, Python, IDL (Corba and Microsoft flavors), Fortran, VHDL,
Problem Solving With C++ Doxygen Oct/Nov Introduction Doxygen is a documentation generator, a tool for writing software reference documentation.
Website Source Code Free Download.
Introduction to PHP and MySQL – Creating Database-Driven Websites
Build and Test system for FairRoot
Automatic Documentation Systems
Top 8 Best Programming Languages To Learn
Advanced Programing practices
LECTURE 03: The Bash Command Line
Doxygen.
Introduction to Advanced Java Programming
Documentation Generators
PHP Introduction.
Doxygen Documentation
Class Commenting Doxygen for Classes.
Advanced Programing practices
Web Application Development Using PHP
Presentation transcript:

Doxygen: Source Code Documentation Generator John Tully

Motivation Reminder – 2 main uses: Reminder – 2 main uses: Generating on-line documentation browsers / off-line reference manuals directly from source Generating on-line documentation browsers / off-line reference manuals directly from source Many languages: C, C++, Java, Python, PHP Many languages: C, C++, Java, Python, PHP Many output formats Many output formats All configurable with many format-specific options All configurable with many format-specific options Extracting source code structure from undocumented source files (various visualizations): Extracting source code structure from undocumented source files (various visualizations): Many useful ways to visualize source code Many useful ways to visualize source code Again, configurable with visualization-specific options Again, configurable with visualization-specific options

History Creator : Dimitri van Heesch; first release in 1997 Creator : Dimitri van Heesch; first release in 1997 Often used Qt widget toolkit, an application development framework (popular for creating GUIs) Often used Qt widget toolkit, an application development framework (popular for creating GUIs) Wrote docs by hand to look exactly like Qt’s (became a nightmare to maintain by hand) Wrote docs by hand to look exactly like Qt’s (became a nightmare to maintain by hand) Tried Doc++ to do this automatically; not configurable enough for liking Tried Doc++ to do this automatically; not configurable enough for liking Started writing own generator code… Doxygen born Started writing own generator code… Doxygen born

Environment & Setup Developed under Linux & OS X, but made to be highly portable – works on most Unix flavors; executables for Windows available Developed under Linux & OS X, but made to be highly portable – works on most Unix flavors; executables for Windows available Releases for all platforms can be found at doxygen.org (redirects to homepage of Dimitri van Heesch) Releases for all platforms can be found at doxygen.org (redirects to homepage of Dimitri van Heesch) Easy installation; short “getting started” manual page is enough learn all basic functionality Easy installation; short “getting started” manual page is enough learn all basic functionality

Features “Important” features depend on what user wants to do – most impressive part is ease of configuration of each “Important” features depend on what user wants to do – most impressive part is ease of configuration of each Documentation generation: for users who what to keep docs consistent with code Documentation generation: for users who what to keep docs consistent with code HTML, hyperlinked PDF HTML, hyperlinked PDF LaTex, RTF (for Word), PostScript, PDF, Unix man pages LaTex, RTF (for Word), PostScript, PDF, Unix man pages Source Code Visualization: for users to extract code structure from undocumented sources Source Code Visualization: for users to extract code structure from undocumented sources Dependency graphs Dependency graphs Inheritance diagrams Inheritance diagrams Collaboration diagrams Collaboration diagrams

Limitations / Extensions ‘Doxygen Wish List’ available for anyone interested in implementing more features ‘Doxygen Wish List’ available for anyone interested in implementing more features Huge list of languages Huge list of languages Database programming (SQL) Database programming (SQL) Scripting (Perl, Bash shell scripts; does support for PHP and Python) Scripting (Perl, Bash shell scripts; does support for PHP and Python) Hardware Description (VHDL, Verilog) Hardware Description (VHDL, Verilog) Many others -- Visual Basic, Fortran, MATLAB, etc….. Many others -- Visual Basic, Fortran, MATLAB, etc….. Many more output formats Many more output formats XHTML, SGML, DocBook, Framemaker XHTML, SGML, DocBook, Framemaker Better use of template files – Java Doclets apparently good for this Better use of template files – Java Doclets apparently good for this

Related Tools Several tools (ROBODoc, TwinText) support pretty much any programming language, but don’t seem as easy to use as Doxygen Several tools (ROBODoc, TwinText) support pretty much any programming language, but don’t seem as easy to use as Doxygen More importantly, Doxygen seems to be one of the only tools for useful diagram generation (most others are language-specific) More importantly, Doxygen seems to be one of the only tools for useful diagram generation (most others are language-specific) Others (Javadoc, CppDoc) only support specific languages Others (Javadoc, CppDoc) only support specific languages Generally up to user’s needs Generally up to user’s needs Importance of supporting different languages Importance of supporting different languages Configurability Configurability Ease of use Ease of use

Documentation Basics Doxygen Manual: documenting the code Doxygen Manual: documenting the code Several styles Several styles Javadoc /** my comment */ Javadoc /** my comment */ Qt /*! my comment */ Qt /*! my comment */ C/C++ single-line /// my comment C/C++ single-line /// my comment Others //! my comment Others //! my comment 1 brief (one line only), 1 detailed description allowed for each block 1 brief (one line only), 1 detailed description allowed for each block Discussion – why is this useful? Discussion – why is this useful? Getting Started (Demo 1) Getting Started (Demo 1) Brief vs. detailed descriptions Brief vs. detailed descriptions Commands inside of detailed descriptions Commands inside of detailed descriptions Descriptions after members of class vs. before Descriptions after members of class vs. before Questions on basics? Questions on basics?

Structural Commands In step 1, doc blocks in front of declarations or definitions of classes, or directly before/after its members. In step 1, doc blocks in front of declarations or definitions of classes, or directly before/after its members. With structural commands, we can put documentation blocks anywhere With structural commands, we can put documentation blocks anywhere This “duplicates” information in a way (not desirable – why not?) This “duplicates” information in a way (not desirable – why not?) Important : to document global objects (functions, typedefs, enum, macros, etc), you must document the file in which they are defined Important : to document global objects (functions, typedefs, enum, macros, etc), you must document the file in which they are defined Header file with structural commands (Demo 2) Header file with structural commands (Demo 2) These comment blocks could be moved anywhere These comment blocks could be moved anywhere But, now we have to change 2 things – do you really want this??? But, now we have to change 2 things – do you really want this???

More Useful Features Grouping (Demo 3) Grouping (Demo 3) Modules can be used to group files, classes, functions, variables, typedefs/defines, etc. (and other modules) Modules can be used to group files, classes, functions, variables, typedefs/defines, etc. (and other modules) Defined groups go in a separate modules section in documentation Defined groups go in a separate modules section in documentation Discussion: why is this useful? Discussion: why is this useful? Fairly simple to group with small set of commands Fairly simple to group with small set of commands /defgroup /defgroup /ingroup /ingroup /addtogroup /addtogroup Automatic Link Generation (Demo 4) Automatic Link Generation (Demo 4)

Diagram Generation With “dot” tool from GraphViz package: With “dot” tool from GraphViz package: Class diagrams Class diagrams Collaboration diagrams Collaboration diagrams Dependency graphs Dependency graphs Class hierarchy Class hierarchy Call graphs Call graphs Built-in diagram tool still pretty useful for inheritance diagrams (HTML only) (Demo 5) Built-in diagram tool still pretty useful for inheritance diagrams (HTML only) (Demo 5) Tools good for quicker understanding/navigation through undocumented source code (EXTRACT_ALL option in config file / GUI) Tools good for quicker understanding/navigation through undocumented source code (EXTRACT_ALL option in config file / GUI)

Questions / Discussion