2008-08-26 39 views
56

Básicamente quiero herramientas que generan la visualización del código fuente como:Visualización de código fuente C/C++?

  • gráfica llamada a la función
  • gráfico de dependencias
  • ...
+1

¿quiere decir dependencias en interfaces (por ejemplo, diagramas de herencia) o dependencias en implementaciones (gráfico de llamadas, por ejemplo, hay un borde de la función A a B si A llama a B en su cuerpo)? – Krystian

+0

Puede probar CppDepend (http://www.cppdepend.com) donde puede generar gráficos de función call graph/dependency y filtrar los elementos en el gráfico utilizando CQLinq.CppDepend es gratuito para los contribuyentes de código abierto. –

Respuesta

2

Puede ser una duplicación, pero echa un vistazo a ollydbg, IDA Pro y this website tiene un montón de recursos con algunas imágenes muy sexys.

47

Doxygen es realmente excelente para esto, aunque tendrá que instalar GraphViz para obtener los gráficos para dibujar.

Una vez que tienes todo instalado, es realmente bastante simple dibujar los gráficos. Asegúrese de establecer EXTRACT_ALL y CALL_GRAPH en verdadero y debe estar listo para continuar.

La documentación completa de esta función para Doxygen es here.

+1

Dulce. Muy sencillo de usar. GraphViz modifica la ruta del sistema y doxygen lo usa. – bobobobo

+2

+1 Acepto. Doxygen es una herramienta muy útil cuando se explora el código existente. Marque la opción que genera el código fuente y navegue fácilmente por su base de código sin abrir el editor de código ... – neuro

+0

Asegúrese de también HAVE_DOT = SÍ – polypus74

5

Usted puede mirar en 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 está muy cerca de las funciones de gráfico de llamadas).

Pero después de obtener algunas imágenes en una 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í, utilizar el modismo "divide y rige" 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.

+0

+1 buen comentario. – neuro

9

Recomiendo encarecidamente BOUML. Es una aplicación de modelado UML libre, que:

  • es extremadamente rápido (el más rápido de herramientas UML jamás creado, echa un vistazo a benchmarks),
  • tiene sólida C++ apoyo a las importaciones de rock,
  • tiene apoyo a la exportación gran SVG, que es importante, porque ver gráficos grandes en formato vectorial, que se escalan rápidamente, por ejemplo Firefox, es muy conveniente (puede cambiar rápidamente entre la vista de "ojo de pájaro" y la vista de detalles de clase),
  • tiene funciones completas, desarrollo intensivo impresionante (mira development history, es difícil de creer que sea posible un progreso tan rápido).

Así que: importe su código en BOUML y mire allí, o expórtelo a SVG y visualícelo en Firefox.

Para la versión gratuita:

+0

+1 para herramientas UML gratuitas que merecen ser probadas. – neuro

+0

El instalador de Windows para 4.23.7 ​​se puede encontrar en la misma página de sourceforge que Douml en la sección "Archivos". – Zeks

+0

http://launchpad.net/~pasgui/+archive/ppa/ este chico está creando compilaciones regulares para douml debian/ubuntu Como @Zeks sugirió en otro hilo. – kikeenrique

1

Hay una vieja herramienta llamada CDOC que todavía se utiliza para generar la llamada árboles.

3

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 permanecer atentos. Mientras tanto, puede publicar en el foro VS Architectural Discovery & Herramientas de modelado 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, se puede obtener más información sobre la creación de diagramas de secuencia y diagramas de dependencia de código .NET en los siguientes temas:

Cómo: Buscar código Utilizando el Explorador de Arquitectura: http://msdn.microsoft.com/en-us/library/dd409431%28VS.100%29.aspx

Cómo a: generar documentos Gráfico del Código: http://msdn.microsoft.com/en-us/library/dd409453%28VS.100%29.aspx#SeeSpecificSource

Cómo: Explora código con diagramas de secuencia: http://msdn.microsoft.com/en-us/library/ee317485%28VS.100%29.aspx

para Probar la versión RC y proporcionar información, descargarlo en http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=457bab91-5eb2-4b36-b0f4-d6f34683c62a

2

Además de herramientas escritas anteriormente, puede intentar understand. Pero, no es gratis.

+0

Tienen una versión de prueba que puede ser bastante útil. – karlphillip