2011-01-21 34 views

Respuesta

42

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

+6

Podrá navegar por toda la jerarquía, los límites están en lo que se muestra en un diagrama.Hay un par de parámetros que limitan el alcance del gráfico. DOT_GRAPH_NODES limita el número de entradas en una sola página y MAX_DOT_GRAPH_DEPTH restringe su profundidad. Establecer estos valores grandes hace que sea muy lento para un proyecto grande. – DanS

+0

+1 en esto - doxygen-gui funciona como un CHARM –

4

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

+11

¿Estás hablando de la opción UML_LOOK? –

38

Presupuesto de this post (que está escrito por el autor de doxygen sí mismo):

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

    EXTRACT_ALL   = YES 
    HAVE_DOT    = YES 
    UML_LOOK    = YES 

run doxygen again 
+7

Esto no generará un diagrama de clase completo (por ejemplo, la relación muchos a uno entre la clase A y la clase B); solo un diagrama de herencia, es decir, mostrando relaciones de superclase/subclase. – stepthom

2

EA va a construir un diagrama UML de código fuente importada.

+0

Upvoted para también responder a la pregunta "Si hay mejores herramientas para lograr esto más fácil, hágamelo saber". – kaveish

14

Hmm, esto parece ser un poco de una vieja pregunta, pero desde que he sido perder el tiempo con la configuración Doxygen últimos días, mientras que la cabeza todavía está lleno de información actual que vamos a tener una puñalada en ella -

Creo que las respuestas anteriores casi lo tienen:

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

lo tanto, como un ejemplo más completo, típicas opciones "Doxyfile" relacionados con UML de salida que tienden a utilizar 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 tanto "herencia" (CLASS_GRAPH=YES) y "colaboración" (COLLABORATION_GRAPH=YES) diagramas.

Dependiendo de su objetivo de "despliegue" de la salida de doxí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 el resultado en buscadores que no sean IE, también existe INTERACTIVE_SVG = YES que permitirá "zoom y paneo interactivo" de los diagramas svg generados. Intenté esto hace algún tiempo, y la salida svg fue muy atractiva visualmente, pero en ese momento, el soporte del navegador para svg todavía era un poco inconsistente, así que con suerte esa situación puede haber mejorado últimamente.

Como han mencionado otros comentarios, algunas de estas configuraciones (DOT_GRAPH_MAX_NODES en particular) tienen un posible impacto en el rendimiento, por lo tanto, YMMV.

Tiendo a odiar las respuestas de estilo "RTFM", así que le pido disculpas por esta oración, pero en este caso la documentación de Doxygen es realmente tu amiga, así que mira los documentos de Doxygen en la configuración mencionada anteriormente. encuentra los detalles en http://www.stack.nl/~dimitri/doxygen/manual/config.html.

+0

Buena respuesta. En su respuesta, escribió "CLASS _DIAGRAMS" en lugar de "CLASS_GRAPH". – DavidS

+0

Hmm, en realidad, ahora que lo mencionas, veo que tengo tanto CLASS_DIAGRAMS = YES como CLASS_GRAPH = YES. Después de consultar los documentos para Doxygen 1.8.9.1, descubrí que en realidad CLASS_GRAPH = YES anulará CLASS_DIAGRAMS = YES, por lo que las dos opciones interactúan, y CLASS_GRAPH = YES tiene prioridad. Entonces, en realidad, para los propósitos de la pregunta original, lo que tengo funcionará, ¡sin embargo, buena captura! – user6092647

+0

también puede cambiar el OUTPUT_DIRECTORY y permitir la búsqueda de RECURSIVE –

Cuestiones relacionadas