Cómo usar doxygen para crear diagramas de clases UML a partir del código fuente de C++


He estado buscando algún material que describa cómo generar diagramas de clases simples con doxygen, pero no pude encontrar uno. ¿Alguien puede ayudar?

Necesito crear diagramas como se muestra a continuación a partir de un conjunto de archivos C++. texto alt

Si hay mejores herramientas para lograr esto más fácil, por favor hágamelo saber.

Author: devnull, 2011-01-21

5 answers

Doxygen crea diagramas de herencia, pero no creo que vaya a crear una jerarquía de clases completa. Le permite utilizar la herramienta GraphViz. Si utiliza la herramienta de interfaz gráfica de usuario Doxygen, encontrará las opciones relevantes en Step2: -> Wizard tab -> Diagrams. Las opciones de relación de PUNTOS están en la pestaña Experto.

 44
Author: DPD,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-10 15:28:36

Cita de este post (está escrito por el propio autor de doxygen) :

run doxygen -g and change the following options of the generated Doxyfile:

    EXTRACT_ALL            = YES
    HAVE_DOT               = YES
    UML_LOOK               = YES

run doxygen again
 38
Author: average,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:26:15

Hmm, esto parece ser un poco de una vieja pregunta, pero ya que he estado jugando con la configuración de Doxygen últimos días, mientras que mi cabeza todavía está llena de información actual vamos a tener una puñalada en ella -

Creo que las respuestas anteriores casi lo tienen:

La opción que falta es agregar COLLABORATION_GRAPH = YES en el Doxyfile. Asumo que puedes hacer lo equivalente en algún lugar de la GUI de doxywizard (no uso doxywizard).

Entonces, como un ejemplo más completo, las opciones típicas de "Doxyfile" relacionadas con La salida UML que tiendo a usar son:

EXTRACT_ALL          = YES
CLASS_DIAGRAMS      = YES
HIDE_UNDOC_RELATIONS = NO
HAVE_DOT             = YES
CLASS_GRAPH          = YES
COLLABORATION_GRAPH  = YES
UML_LOOK             = YES
UML_LIMIT_NUM_FIELDS = 50
TEMPLATE_RELATIONS   = YES
DOT_GRAPH_MAX_NODES  = 100
MAX_DOT_GRAPH_DEPTH  = 0
DOT_TRANSPARENT      = YES

Estos ajustes generarán diagramas tanto de "herencia" (CLASS_GRAPH=YES) como de "colaboración" (COLLABORATION_GRAPH=YES).

Dependiendo de su destino para la "implementación" de la salida doxygen, la configuración DOT_IMAGE_FORMAT = svg también puede ser útil. Con la salida svg los diagramas son "escalables" en lugar de la resolución fija de formatos de mapa de bits como .png. Al parecer, si la visualización de la salida en navegadores distintos de IE, también hay INTERACTIVE_SVG = YES que permitirá " zoom interactivo y panorámica" de los diagramas svg generados. Probé esto hace algún tiempo, y la salida svg era muy atractiva visualmente, pero en ese momento, el soporte del navegador para svg todavía era un poco inconsistente, así que espero que la situación haya mejorado últimamente.

Como han mencionado otros comentarios, algunos de estos ajustes (DOT_GRAPH_MAX_NODES en particular) tienen impactos potenciales en el rendimiento, por lo que YMMV.

Tiendo a odiar las respuestas de estilo "RTFM", así que disculpas por esta oración, pero en este caso la documentación de Doxygen realmente es tu amigo, así que echa un vistazo a los documentos de Doxygen en la configuración mencionada anteriormente - la última vez que miré puedes encontrar los detalles en http://www.stack.nl / ~dimitri/doxygen/manual/config.html .

 22
Author: user6092647,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-27 17:30:52

Creo que tendrá que editar el archivo doxys y establecer GENERATE_UML (algo así) a true. Y necesita tener dot/graphviz instalado.

 4
Author: fzhou,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-21 06:28:31

Enterprise Architect construirá un diagrama UML a partir del código fuente importado.

 3
Author: zooropa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-30 16:07:00