MYMSE Doxygen Basico v2 0
MYMSE Doxygen Basico v2 0
MYMSE Doxygen Basico v2 0
SISTEMAS EMPOTRADOS
MEJORA Y MANTENIMIENTO
DE SISTEMAS EMBEBIDOS
1º CURSO
INDICE
1 INTRODUCCIÓN ..............................................................................................................4
2 INSTALACIÓN Y CONFIGURACIÓN ....................................................................................5
3 CREAR FICHERO CONFIGURACIÓN DOXYGEN ...................................................................8
4 ANALIZAR DOCUMENTACIÓN GENERADA ...................................................................... 12
5 BUENAS PRÁCTICAS DOCUMENTACIÓN ......................................................................... 17
6 PREGUNTAS FRECUENTES ............................................................................................. 22
2 / 22
Trabajar con Doxygen MEJORA Y MANTENIMIENTO DE SISTEMAS EMBEBIDOS
INDICE FIGURAS
Figura 1: Habilitar parámetro HAVE_DOT ........................................................................ 6
Figura 2: Habilitar parámetros CALL_GRAPH y CALLER_GRAPH ...................................... 6
Figura 3: Definir ubicación DOT_PATH ............................................................................. 7
Figura 4: Configuración apartado Project del Wizard ...................................................... 8
Figura 5: Configuración apartado Mode del Wizard ........................................................ 9
Figura 6: Configuración apartado Output del Wizard ...................................................... 9
Figura 7: Configuración apartado Diagram del Wizard .................................................. 10
Figura 8: Configuración IMAGE_PATH............................................................................ 10
Figura 9: Ejecutar la generación de la documentación .................................................. 11
Figura 10: Output del proceso de generación documentación...................................... 11
Figura 11: Página principal documentación HTML ......................................................... 12
Figura 12: Apartado Related Pages de la documentación ............................................. 12
Figura 13: Detalle de la sub sección Todo List de la documentación ............................. 13
Figura 14: Código fuente del fichero Sarrera.c con comentario @todo ........................ 13
Figura 15: Apartado Data Structures de la documentación ........................................... 14
Figura 16: Apartado Files de la documentación ............................................................. 14
Figura 17: Detalle del gráfico generado con dot ............................................................ 15
Figura 18: Detalle de la imagen incorporada a la documentación................................. 15
Figura 19: Código fuente del fichero main.c con comentario @image.......................... 16
3 / 22
Trabajar con Doxygen MEJORA Y MANTENIMIENTO DE SISTEMAS EMBEBIDOS
1 INTRODUCCIÓN
En este documento se describirá cómo instalar las herramientas necesarias para poder
trabajar de forma básica en la generación de documentación con Doxygen.
En un primer apartado se describe la instalación y configuración de las herramientas
necesarias para poner en marcha Doxygen.
En un segundo apartado se detalla cómo definir un fichero de configuración que recoja
las opciones que parametrizarán la generación de documentación.
En un tercer apartado se presentan los ejemplos para el análisis de la documentación
generada basada en un software de ejemplo desarrollado por alumnos de 1º de Grado de
Informática y Grado Telecomunicaciones en ANSI – C.
Se describe en un apartado las buenas prácticas a la hora de incluir comentarios a la
documentación.
Se dedica un apartado a resolver las principales cuestiones planteadas al comenzar a
trabajar con Doxygen en un entorno de programación en ANSI-C.
4 / 22
Trabajar con Doxygen MEJORA Y MANTENIMIENTO DE SISTEMAS EMBEBIDOS
2 INSTALACIÓN Y CONFIGURACIÓN
Esta guía describe los pasos a relizar para instalar y configurar Doxygen 1.8.6 y
GraphViz 2.36 en un equipo con Windows 7 64bit. Para otras versiones o para otros sistemas
operativos deberán consultarse los requerimientos de cada una de las aplicaciones instaladas
y/o buscar alternativas apropiadas para el sistema operativo.
1. Descarga doxygen
De la web www.doxygen.org en el apartado de download descargar el archivo auto
instaldor doxygen-1.8.6-setup.exe desde la siguiendo el enlace
http://www.stack.nl/~dimitri/doxygen/download.html#srcbin
Opcionalmente se pueden descargar también manuales y extensiones (Helper tolos
and scripts).
2. Instalación
Realizar la instalación utilizando el instalador (doxygen-1.8.6-setup.exe) en modo
administrador.
En el asistente seleccionar las opciones por defecto.
3. Instalación de GraphViz
Doxygen utiliza esta herramienta para renderizar imágenes de los diagramas
generados. Descargar el instalador (graphviz-2.36.msi) de GraphViz desde su sitio web
http://www.graphviz.org/Download.php.
A continuación realizar la instalación de GraphVis siguiendo las instrucciones y
opciones por defecto del instalador.
4. Configurar Graphviz en doxygen
Iniciar la aplicación Doxygen para realizar las configuraciones pertinentes.
Para habilitar en Doxygen la generación de diagramas basados en la librería DOT
proporcionada por la herramienta Graphviz (para más información sobre el lenguaje
DOT consultar http://www.graphviz.org/content/dot-language) se debe habilitar la
propiedad HAVE_DOT = YES disponible en la sección Expert > Dot.
5 / 22
Trabajar con Doxygen MEJORA Y MANTENIMIENTO DE SISTEMAS EMBEBIDOS
6 / 22
Trabajar con Doxygen MEJORA Y MANTENIMIENTO DE SISTEMAS EMBEBIDOS
7 / 22
Trabajar con Doxygen MEJORA Y MANTENIMIENTO DE SISTEMAS EMBEBIDOS
Este apartado describe cómo configurar un fichero de doxygen para que realice la
generación automática de documentación de un proyecto desarrollado en ANSI-C.
1. Configuración básica
La configuración básica de un fichero de configuración Doxygen requiere completar los
siguientes apartados del wizard.
En la sección Project:
Project Name
Project synopsis (opcional)
Source code directory (scan recursively activado)
Destination directory
En la sección Mode:
Select the desired extraction mode: All Entities (include cross-referenced source code
in the output)
Select programming language to optimize the results for: Optimize for C or PHP
output.
8 / 22
Trabajar con Doxygen MEJORA Y MANTENIMIENTO DE SISTEMAS EMBEBIDOS
En la sección Output:
HTML > plain HTML (with search function)
En la sección Diagrams:
Diagrams to generate:
Use dot tool from the GraphViz package
9 / 22
Trabajar con Doxygen MEJORA Y MANTENIMIENTO DE SISTEMAS EMBEBIDOS
10 / 22
Trabajar con Doxygen MEJORA Y MANTENIMIENTO DE SISTEMAS EMBEBIDOS
3. Guardar la configuración
Guardar (File > Save as) la configuración para recuperarla en el futuro.
4. Ejecutar la configuración
Desde la pestaña RUN iniciaremos la generación automática de la documentación. La
generación de la documentación HTML es ligera, pero la generación de los diagramas
requiere de más tiempo.
11 / 22
Trabajar con Doxygen MEJORA Y MANTENIMIENTO DE SISTEMAS EMBEBIDOS
2. Related Pages
En la sección “Related Pages” se presenta la subsección Todo List que recoge las tareas
pendientes del código, identificadas en el código con el parámetro @todo.
12 / 22
Trabajar con Doxygen MEJORA Y MANTENIMIENTO DE SISTEMAS EMBEBIDOS
Figura 14: Código fuente del fichero Sarrera.c con comentario @todo
3. Data Structures
En la sección “Data Sturctures” se presenta las estructuras de datos.
13 / 22
Trabajar con Doxygen MEJORA Y MANTENIMIENTO DE SISTEMAS EMBEBIDOS
4. Files
En la sección “Files” se presentan todos los ficheros de código documentados por
Doxygen.
14 / 22
Trabajar con Doxygen MEJORA Y MANTENIMIENTO DE SISTEMAS EMBEBIDOS
15 / 22
Trabajar con Doxygen MEJORA Y MANTENIMIENTO DE SISTEMAS EMBEBIDOS
Figura 19: Código fuente del fichero main.c con comentario @image
16 / 22
Trabajar con Doxygen MEJORA Y MANTENIMIENTO DE SISTEMAS EMBEBIDOS
/**
* ... text ...
*/
El comentario comienza con los caracteres /** y finaliza con los caracteres */
Aunque en las líneas intermedias podría omitirse el carácter * se recomienda
mantenerlo para identificar claramente que se trata de una línea de comentario.
Realizar bloques de comentarios que se identifiquen con facilidad
Si deseamos crear bloques de comentarios que tengan mayor visibilidad en la
documentación, se puede utilizar la siguiente sintaxis:
/********************************************//**
* ... text
***********************************************/
Obsérvese, que al final de la primera línea de comentarios se incluyen 2 caracteres //.
De esta forma finalizamos un comentario e iniciamos otro.
Respetar la indentación
Respetar la indentación mejora la estructuración y legibilidad de los comentarios.
Evitar casos como el expuesto a continuación
/**
* ... text
*/
Parámetros @brief y @file
En la cabecera del fichero describe la descripción general del fichero.
/********************************************//**
* @file fichero.c
* @brief Descripcion del fichero
************************************************/
Es obligatorio identificar el fichero para mostrar su descripción @brief en la
descripción general de la sección Files del menú de Doxygen. En fundamental respetar
el nombre del fichero.
17 / 22
Trabajar con Doxygen MEJORA Y MANTENIMIENTO DE SISTEMAS EMBEBIDOS
/********************************************//**
* @file fichero.c
* Descripcion del fichero
************************************************/
Parámetro @param
Nos permite identificar los parámetros de funciones (@param). Opcionalmente
podemos definir el sentido/orientación de los parámetros [in][out].
/********************************************//**
* @file copia.c
* @brief Copia bytes de un area de memoria origen
* a un area de memoria destino
* @param[out] dest Area de memoria destino
* @param[in] src Area de memoria origen
* @param[in] n Numero de bytes a copiar
************************************************/
Parámetro @return
Describe los valores devueltos de una función.
/********************************************//**
* @file fichero.c
* @brief Descripcion del fichero
* @return Array con coordenadas
************************************************/
Parámetro @todo
Indica una sección de comentarios para una tarea pendiente de realizar. Esta
descripción se añadirá a la sección TODO de tareas pendientes (en la sección Related
pages del menú, en la sub sección Todo List). Cada parámetro @todo genera una tarea
independiente.
/********************************************//**
* @file fichero.c
* @brief Descripcion del fichero
* @todo Describir la tarea pendiente
************************************************/
Parámetro @image
Muestra en la documentación la imagen indicada. Requiere la definición del
IMAGE_PATH al directorio donde se alojará el fichero con la imagen. Se debe
especificar el formato de salida (HTML en este caso). Si deseamos generar una sección
específica (con una cabecera) para la imagen revisar la documentación del parámetro
@par.
18 / 22
Trabajar con Doxygen MEJORA Y MANTENIMIENTO DE SISTEMAS EMBEBIDOS
/********************************************//**
* @file fichero.c
* @brief Descripcion del fichero
* @image html imagen.jpg
************************************************/
Parámetro @par
Permite la creación de párrafos por parte del usuario, el siguiente ejemplo ilustra
múltiples combinaciones. Más información en la documentación oficial de Doxygen
(@par).
/********************************************//**
* Normal text.
*
* \par User defined paragraph:
* Contents of the paragraph.
*
* \par
* New paragraph under the same heading.
*
* \note
* This note consists of two paragraphs.
* This is the first paragraph.
*
* \par
* And this is the second paragraph.
*
* More normal text.
*/
Parámetros especiales
A continuación se listan los parámetros complementarios para documentar código
ANSI-C.
19 / 22
Trabajar con Doxygen MEJORA Y MANTENIMIENTO DE SISTEMAS EMBEBIDOS
fixme=@todo
El texto del ejemplo se traduce (en el fichero de configuración) a
ALIASES = fixme=@todo
El ejemplo previo define un alias para la etiqueta @fixme que equivaldrá a @todo. Por
lo tanto los siguientes comentarios marcados con @todo y @fixme serán tratados de
la misma forma por Doxygen
/********************************************//**
* @file fichero.c
* @brief Descripcion del fichero
* @todo tarea pendiente 1
* @fixme tarea pendiente 2
************************************************/
/********************************************//**
* @file fichero.c
* @brief Descripcion del fichero
* @req Nuevo requisito
* @bug #35 Error
* @todo tarea pendiente
************************************************/
El ejemplo anterior ilustra la creación de la nueva sub sección en Related pages para
Requirements, donde incluirá el comentario detallado.
La sub sección Bug List, al igual que la sub sección de Todo List, están pre definidas por
Doxygen para poder trabajar con las etiquetas @bug y @todo respectivamente, por lo
que al incluir un comentario con la etiqueta, la sección se genera utomáticamente.
20 / 22
Trabajar con Doxygen MEJORA Y MANTENIMIENTO DE SISTEMAS EMBEBIDOS
Experiencias de terceros
A continuación se proponen algunas recomendaciones y ejemplo de uso de Doxygen:
o RTEMS http://rtems.org/wiki/index.php/Doxygen_Recommendations
o Carnegie Mellon https://www.cs.cmu.edu/~410/doc/doxygen.html
o Stackoverflow question http://stackoverflow.com/questions/51667/best-tips-
for-documenting-code-using-doxygen
21 / 22
Trabajar con Doxygen MEJORA Y MANTENIMIENTO DE SISTEMAS EMBEBIDOS
6 PREGUNTAS FRECUENTES
22 / 22