programa - ¿Visualización de código fuente de C/C++?
programas en c++ ejemplos avanzados (8)
Básicamente, quiero herramientas que generen visualización de código fuente como:
- gráfico de llamada de función
- gráfico de dependencia
- ...
Además de las herramientas escritas arriba, puedes intentar entender . Pero, no es gratis.
Hay una herramienta antigua llamada CDOC que todavía usamos para generar árboles de llamadas.
Puede ser una duplicación, pero echa un vistazo a ollydbg, IDA Pro y este sitio web tiene un montón de recursos con algunas imágenes muy sexys.
Puede ver diferentes herramientas para el diseño y modelado de software ( Rational Rose , Sparx Enterprise Architect , Umbrello , etc.). La mayoría de ellos tiene alguna funcionalidad para invertir el modelado por código fuente, y obtener diagramas de clase UML, y en ocasiones incluso diagramas de secuencia (y esto es muy similar al gráfico de llamadas de funciones).
Pero después de obtener algunas imágenes en la base de código de proyecto realmente grande, puede darse cuenta de que tales gráficos son difíciles de leer y comprender. Desafortunadamente las capacidades de visualización de complejidad son muy limitadas.
En cuanto a mí, usar un modismo de "dividir y gobernar" es un enfoque más conveniente. Puede extraer diferentes bloques o capas de funcionalidad de su base de código (simplemente clasificando archivos cpp por carpetas diferentes a veces). Otra forma es usar algunos scripts (bash, python) para crear tablas csv simples con los parámetros interesados de los archivos, clases o funciones como "número de dependencias", etc.
Recomiendo BOUML . Es una aplicación de modelado UML gratuita, que:
- es extremadamente rápido (la herramienta UML más rápida que se haya creado, consulte los puntos de referencia ),
- tiene una sólida compatibilidad con la importación de C ++,
- tiene una gran compatibilidad con las exportaciones de SVG, lo cual es importante, ya que es muy conveniente ver gráficos grandes en formato vectorial, que escalan rápidamente en, por ejemplo, Firefox (puede cambiar rápidamente entre vista de pájaro y vista de detalles de clase).
- tiene todas las funciones, impresionantemente desarrollado intensamente (mira la historia del desarrollo , es difícil creer que sea posible un progreso tan rápido).
Entonces: importe su código en BOUML y véalo allí, o exporte a SVG y visualícelo en Firefox.
Para la versión gratuita:
- la fuente está en Github como DoUML
- Los instaladores se pueden descargar de http://www.bouml.fr/download.html
Si usa Visual Studio, la versión Ultimate 2010 le permite generar diagramas de secuencia y gráficos de dependencia. Sin embargo, el lanzamiento actualmente solo admite proyectos de aplicaciones .NET.
El equipo ha recibido mucho interés en apoyar C ++ en una versión futura, por lo que es posible que desee mantenerse atentos. Mientras tanto, puede publicar en el foro VS 2010 Architectural Discovery & Modeling Tools en http://social.msdn.microsoft.com/Forums/en-US/vsarch/threads para solicitar una actualización. Sé que al equipo del producto le encanta escuchar los comentarios de los clientes sobre las herramientas.
Mientras tanto, puede obtener más información sobre cómo crear diagramas de secuencia y diagramas de dependencia desde el código .NET en los siguientes temas:
Cómo buscar código usando Architecture Explorer : http://msdn.microsoft.com/en-us/library/dd409431%28VS.100%29.aspx
Cómo: generar documentos gráficos desde código : http://msdn.microsoft.com/en-us/library/dd409453%28VS.100%29.aspx#SeeSpecificSource
Cómo: Explorar código con diagramas de secuencia : http://msdn.microsoft.com/en-us/library/ee317485%28VS.100%29.aspx
Para probar el lanzamiento de RC y brindar comentarios, descárguelo en http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=457bab91-5eb2-4b36-b0f4-d6f34683c62a.
Doxygen es realmente excelente para esto, aunque necesitará instalar GraphViz para dibujar los gráficos.
Una vez que tienes todo instalado, es bastante simple dibujar los gráficos. Asegúrate de establecer EXTRACT_ALL y CALL_GRAPH en verdadero y deberías estar listo para continuar.
La documentación completa sobre esta función para Doxygen está aquí , y también tiene un ejemplo útil.