He estado buscando 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 ++.
Si hay mejores herramientas para lograr esto más fácilmente, hágamelo saber.
Respuestas:
Doxygen crea diagramas de herencia pero no creo que creará una jerarquía de clases completa. Le permite utilizar la herramienta GraphViz. Si utiliza la herramienta de interfaz gráfica de usuario de Doxygen, encontrará las opciones relevantes en
Step2: -> Wizard tab -> Diagrams
. Las opciones de relación DOT se encuentran en la pestaña Experto.fuente
Cita de esta publicación (está escrita 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
fuente
Hmm, esta parece ser una pregunta un poco vieja, pero como he estado jugando con la configuración de Doxygen los últimos días, mientras mi cabeza todavía está llena de información actual, intentemos hacerlo.
Creo que las respuestas anteriores casi lo tienen:
La opción que falta es agregar
COLLABORATION_GRAPH = YES
el Doxyfile. Supongo que puede hacer lo equivalente en algún lugar de la GUI de doxywizard (yo no uso doxywizard).Entonces, como un ejemplo más completo, las opciones típicas de "Doxyfile" relacionadas con la salida UML que suelo 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
Esta configuración generará diagramas de "herencia" (
CLASS_GRAPH=YES
) y "colaboración" (COLLABORATION_GRAPH=YES
).Dependiendo de su objetivo para el "despliegue" de la salida de oxígeno, 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 los formatos de mapa de bits como .png. Aparentemente, si se visualiza la salida en otros navegadores que no sean IE, también existeINTERACTIVE_SVG = YES
lo que permitirá "hacer zoom y paneo interactivo" de los diagramas svg generados. Probé esto hace algún tiempo, y la salida de 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, algunas de estas configuraciones (
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 amiga, así que revisa los documentos de Doxygen en las configuraciones mencionadas anteriormente. La última vez que miré, puedes encontrar los detalles en http://www.doxygen.nl/manual/config.html .
fuente
RECURSIVE
archivo a YESEnterprise Architect construirá un diagrama UML a partir del código fuente importado.
fuente
Creo que necesitará editar el archivo doxys y establecer GENERATE_UML (algo así) en verdadero. Y necesita tener dot / graphviz instalado.
fuente
Las 2 respuestas con mayor voto positivo son correctas. A partir de hoy, lo único que necesitaba cambiar (desde la configuración predeterminada) era habilitar la generación usando dot en lugar del generador incorporado.
Algunas notas importantes:
html/inherits.html
o (desde la navegación del sitio web) clases => jerarquía de clases => "Ir a la jerarquía de clases textuales".T
.foo
heredaT
y elT
parámetro de tipo de plantilla tiene un valor predeterminado, se asumirá dicho valor predeterminado. Si hay un tipobar
que hereda defoo<U>
whereU
es diferente al predeterminado,bar
tendrá unfoo<U>
padre.foo<>
ybar<U>
no tendrá un padre común.variant
mostrará cualquier instanciación para heredarvariant<Ts...>
.<...>
cadena en su nombre que representa los parámetros de tipo y no tipo que no tenían valores predeterminados.fuente