un montón de espagueti humeante acaba de aterrizar en mi escritorio, y mi tarea es entenderlo (para poder refaccionarlo/reimplementarlo).software de visualización de código de espagueti?
El código es C, y un lío de variables globales, tipos de estructuras y llamadas a funciones.
me gustaría trazar gráficos del código con la información:
- gráfico de llamadas
- ¿Qué tipos struct se utilizan en el cual funciona
- ¿Qué variable global se utiliza en qué función
Esperemos que este haría más fácil identificar los componentes conectados y extraerlos a módulos separados.
He intentado el siguiente software para propósitos similares:
- NCC
- CTags
- codeviz/GENGRAPH
- doxygen
- Egipto
- cflow
Edit2:
- frama-c
- snavigator
- Comprender
Las deficiencias de estos son
a) requiere que pueda compilar el código. Mi código no se compila, ya que partes del código fuente faltan.
b) problemas con las macros del preprocesador (como cflow, que quiere ejecutar ambas ramas de sentencias #if). Pasarlo por cpp estropearía los números de línea.
c) Por algún motivo, no logro que el software haga lo que quiero hacer (como doxygen; la documentación para la generación de gráficos de llamadas no es fácil de encontrar, y dado que no parece representar variables/tipos de datos) de todos modos, probablemente no valga la pena perder más tiempo aprendiendo sobre las opciones de configuración de doxygen). EDITAR: Seguí a these Doxygen instrcutions, pero solo trazó las dependencias de archivos de encabezado.
Estoy en Linux, por lo que es enorme plus si el software es para Linux y software libre. No estoy seguro de que mi jefe comprenda la necesidad de comprar un visualizador :-(
Por ejemplo, una herramienta de línea de comandos que enumera a qué funciones se hace referencia en un símbolo (= función, variable, tipo) sería de gran ayuda (como addr2line, pero para tipos/nombres de variables/funciones y el código fuente)
// T
* "Ejecutarlo a través de cpp estropearía los números de las líneas." * - puede que le interese [Coan] (http://coan2.sourceforge.net/index.php?page=about) (vea [esto respuesta] (http://stackoverflow.com/questions/2786000/separate-specific-ifdef-branches/2786157#2786157)) – detly
coan puede ser útil simplificando el desastre del preprocesador. ¡Gracias! –