¿Existen herramientas para visualizar métodos de plantilla/clase y su uso?

StackOverflow https://stackoverflow.com/questions/35745

  •  09-06-2019
  •  | 
  •  

Pregunta

Me he hecho cargo de una gran base de código y me gustaría obtener una descripción general de cómo y dónde se utilizan determinadas clases y sus métodos.

¿Existe alguna buena herramienta que pueda de alguna manera visualizar las dependencias y dibujar un bonito árbol de llamadas o algo similar?

El código está en C++ en Visual Studio si eso ayuda a limitar la selección.

¿Fue útil?

Solución

Aquí hay algunas opciones:

El último, doxygen, es más una herramienta de documentación automática, pero es capaz de generar gráficos de dependencia y diagramas de herencia.También tiene licencia GPL, a diferencia de los dos primeros que no son gratuitos.

Otros consejos

Cuando utilicé Doxygen, generé una lista completa de personas que llaman y destinatarios.Creo que tienes que encenderlo.

David, gracias por las sugerencias.Pasé el fin de semana probando los programas.

Doxygen parece ser el más completo de los 3, pero aún deja algunas cosas que desear con respecto a los métodos que llaman.

Los 3 parecen tener problemas con las plantillas de C++ en diversos grados.CC-Rider simplemente falló en medio del análisis y CodeDrawer no muestra muchas de las relaciones.Doxygen funcionó bastante bien, pero tampoco encontró ni mostró todas las relaciones y, en cambio, me abrumó con muchas referencias macro hasta que las filtré.

Entonces, tal vez debería aclarar un poco la "base de código grande" para posibles otras sugerencias:>100.000 líneas de código en total distribuidas en más de 100 archivos de plantilla más varios archivos de clase reales que lo unen todo.

¿Alguna otra herramienta disponible que pueda estar a la altura de la tarea y que pueda funcionar mejor (más a fondo)?Ah, y concretamente:¿Algo que entienda las interfaces IDL y COM?

Cuando utilicé Doxygen, generé una lista completa de personas que llaman y destinatarios.Creo que tienes que encenderlo.

Lo hice, por supuesto, pero como mencioné, doxygen no considera interfaces entre objetos tal como están definidos en el IDL."Sólo" muestra llamadas directas a C++.

No me malinterpretes, ya es sorprendente lo que hace, pero aún no está completo desde mi punto de vista de alto nivel, tratando de comprender bien cómo encaja todo.

En Java empezaría con JDepend.En .NET, con NDepend.No sé sobre C ++.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top