Buscando un analizador de código fuente libre (árbol de dependencia de funciones) [cerrado]

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

  •  05-07-2019
  •  | 
  •  

Pregunta

¿Alguien sabe dónde puedo encontrar una utilidad / aplicación que se ejecute en Windows que analice la fuente de C y genere un árbol de dependencia funcional?

Lo que estoy buscando es algo como esto:

  

PrintString- > PrintCharacter- > PrintByte- > Printf

¿Fue útil?

Solución

Es casi seguro que es excesivo, pero puedes hacer esto para C, C ++, PHP, Java, C # y más con Doxygen (si tiene Graphviz dot instalado). Aquí hay una página con un ejemplo de árbol de llamadas generado por Doxygen / dot.

Doxygen se ejecuta bien en Windows y puede generar HTML y algunos otros formatos .

Otros consejos

Las herramientas que leen el código fuente pero no comprenden el lenguaje de programación en un profundo sentido semántico solo pueden ofrecerle una aproximación del gráfico de llamadas. (¿Qué sucede si se produce una llamada en una macro? ¿Qué sucede si esa llamada se produce dentro de un condicional con preprocesador deshabilitado? ¿Qué sucede si la llamada es indirecta?) Si esto es lo suficientemente bueno, y realmente no te importa saber qué hacen las llamadas indirectas, las herramientas como Doxygen y CScope probablemente sean útiles.

Si desea obtener un gráfico de llamadas preciso, necesita una herramienta que construya una que tenga pleno conocimiento del idioma. Frama-C (ver otra respuesta) AFAIK es uno, aunque no sé cómo maneja macros y llamadas indirectas.

No es gratis, pero el DMS Software Reengineering Toolkit y su parte frontal C tienen capacidad completa de procesamiento de macro / preprocesador en C, y crea gráficos de llamadas para un sistema de archivos. Incluye específicamente un análisis de puntos en su construcción de gráfico de llamadas para brindarle una aproximación conservadora de dónde van las llamadas de funciones indirectas. Consulte ejemplo de gráfico de llamadas con arcos negros (llamadas directas) y arcos azules (de forma conservadora analizadas) llamadas indirectas.

Muchas herramientas producen este tipo de call-graph. Doxygen puede tener la mayoría de las opciones de presentación para los resultados, al ser una "programación alfabetizada" herramienta en su núcleo. La herramienta de código abierto en http://frama-c.cea.fr/ produce gráficos de llamadas (también en el formato de punto) e intenta agrupar las funciones por " servicios " automáticamente: http://img23.yfrog.com/img23/8180/9il.png

CodeInsight es un editor comercial que cuenta con la funcionalidad de CTAGS / CSCOPE. Puede mostrar gráficos del árbol de llamadas (y casi cualquier otra relación).

Source Navigator parece estar en desarrollo nuevamente (la última versión de SourceNav NG fue en febrero de este año). Source Navigator puede proporcionarle árboles de llamadas, dependencias de clase, etc. No he probado las versiones recientes. Funciona en windows o X11.

http://sourcenav.berlios.de/

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