¿Tiene alguna sugerencia de herramientas para facilitar la tarea de comprender el código C/C++? Acabamos de heredar una gran pieza de software escrita por otros y necesitamos aprender rápidamente sobre ella. ¿Algún consejo sobre herramientas que podrían simplificar esta tarea?Herramienta para visualizar el flujo de código (C/C++)
Respuesta
SourceInsight y Understand for C++ son las mejores herramientas que puede obtener para el análisis de códigos c/C++, incluidos los diagramas de flujo.
Quiero saber si alguna herramienta para Linux? –
CppDepend (http://www.cppdepend.com) genera un gráfico de llamadas, un gráfico de dependencia con muchas características interesantes y también funciona para Linux. –
Personalmente, utilizo el depurador. Ejecute el código y vea qué está haciendo y dónde está yendo es la única manera.
Sin embargo, puede ejecutarlo a través de algunos generadores de documentación que (a veces) ayudan. Un buen ejemplo es doxygen.
+1 El depurador es el única forma de entender el código. –
Me parece que tratar de entender un * gran * código base con el que no tienes experiencia es bastante ridículo. Intenta hacerlo en un proyecto como Clang o Linux. Te volverás loco. Bueno para el código que estoy familiarizado, o proyectos de tamaño pequeño/mediano en mi humilde opinión. –
Vine aquí desde google porque he estado usando depurador para encontrar dónde cambiar el código en un gran proyecto sin éxito durante cuatro días. –
Doxygen le dará diagramas de relaciones de clase si usa graphviz, incluso si no se ha preparado específicamente para ello.
El software de generación de perfiles le da una idea de qué funciones se han llamado.
Si puede utilizar Linux, intente KCachegrind
Doxygen es una herramienta de generación de doc libre (similar al Javadoc) que también va a producir gráficos de relación así.
Personalmente uso las herramientas del depurador de Visual Studio.
Viene con la función "Gráfico de llamadas" que le permitirá visualizar cosas en pequeñas cajas. Además, la pila de llamadas y las características de reloj habituales suelen ser todo lo que necesito
¿Dónde está el gráfico de llamadas en las herramientas del depurador de Visual Studio? Solo puedo encontrar la jerarquía de llamadas en Visual Studio sin herramientas de depuración. –
Doxygen, lo bueno de esto es que le hará saber hoe feo/bueno es su código en términos de dependencia cíclica de las clases. Por lo tanto, se verá obligado a volver a factorizar el código, aunque no le guste :-)
También hay AspectBrowser que no funciona muy bien con Eclipse 3.4.0
tratar AQtime, Es una herramienta de perfilado que muestra todas las funciones que llamaron (y el tiempo que tomó), se puede establecer el puntos de inicio y fin para el análisis. Tienen una prueba de 30 días.
Los gráficos de llamadas de AQtime a veces son muy esclarecedores, incluso si cree conocer el código. – bk1e
Existen algunas herramientas como Egypt http://www.gson.org/egypt/egypt.html que funcionan, pero solo si coincide con la versión GCC esperada utilizada para compilar el código y la versión exacta del generador de callgraph. Lo mismo puede decirse de codeviz http://www.csn.ul.ie/~mel/projects/codeviz/
Otra opción es valgrind se utiliza en modo Cachegrind (que genera un tipo de callgraph que puede seguir desde el programa kcachegrind.
Solía Borland Together un tiempo atrás y se hizo un decente trabajo de generar modelos a partir del código. Creo que incluso generará diagramas de secuencia a partir del código. Tenga en cuenta que si su código es un desastre, su modelo también lo será. Y, como recuerdo, no es barato, pero a veces puede obtener un especial.
Rational Quantify también presenta un bonito gráfico de llamadas
KScope, basado en la utilidad cscope, si está en Linux (KDE). Lo mejor que he usado (y uso todo el tiempo) para delegar en una gran pieza de código desconocido que tengo que modificar de alguna manera o qué API debo emplear para mis necesidades. Entre sus características se encuentran la base de datos de referencias cruzadas, que se puede buscar de muchas maneras: puede encontrar todas las referencias de un símbolo, su definición global, encontrar llamadores/calles de una función y mucho más. Incluso tiene un IDE incorporado y la capacidad de mostrar un gráfico de llamadas.
Doxygen es muy bueno para generar diagramas a partir del código sin aplicar el marcado, si activa la opción EXTRACT_ALL. Necesita GraphViz instalado para obtener diagramas generados con la configuración HAVE_DOT. Creo que tenerlo instalado y dejar DOT_PATH en blanco funciona bien en Windows, pero en OS/X tengo que señalar directamente a la ubicación de la herramienta de puntos.
Hay un excelente artículo Code Spelunking en ACM Queue que habla más sobre el uso de Doxygen y DTrace.
Slickedit es ideal para navegar por bloques grandes de código que no conoce. La función de etiquetas le permite tratar el código de manera funcional, sin tener que lidiar con el archivo en el que se encuentra (EMACS tiene etiquetas y es tan bueno como Slickedit, pero con una curva de aprendizaje un poco más pronunciada)
Cuando llegue a un método, clase o variable que no comprenda, simplemente presione push para ir a ese código, lo revise y vuelva a etiquetarlo. (ésos están obligados a presionar teclas, por lo que es muy rápido)
También puede usar las referencias de búsqueda para ver dónde se usa esa función/variable.
países toneladas de tiempo por tener que ir y averiguar qué archivo está en algo
he intentado una herramienta llamada Visustin que no es muy grande, pero gráficamente hace lo que dice:. Diagrama de flujo del Código. http://www.aivosto.com/visustin.html
- 1. ¿Herramienta para visualizar el flujo de código en Java?
- 2. ¿Existe alguna herramienta para visualizar un flujo web de grails?
- 3. herramienta para convertir C++ código fuente de diagrama de flujo
- 4. ¿La mejor herramienta para visualizar ontologías?
- 5. Herramienta para rastrear y visualizar el comportamiento pthread en Linux
- 6. ¿Herramienta de código abierto para visualizar las dependencias de archivo de cabecera C/C++?
- 7. El uso de LaTeX Beamer para visualizar el código
- 8. Herramienta para leer y visualizar versiones .class de Java
- 9. C++ herramienta para visualizar la alineación de la memoria?
- 10. ¿Hay alguna herramienta para diagrama de flujo disponible?
- 11. herramienta para explicar el código C
- 12. herramienta para formatear automáticamente el código R
- 13. Herramienta para encontrar el código VHDL comentado
- 14. Herramienta para generar flujo de control en Java
- 15. Herramientas para visualizar el grafo de llamada de aplicación C++ multiproceso, cobertura de código multiproceso?
- 16. Herramienta de comparación de código para Linux
- 17. Herramienta de Java para modificar el código de prueba
- 18. Herramienta de fusión para el código de C#
- 19. herramienta para mostrar la representación diagonal del código c
- 20. herramienta para ver el código generado por el compilador
- 21. malentendido de flujo de código?
- 22. Buenas formas de visualizar los resultados de cobertura de código
- 23. ¿Hay alguna herramienta para comentar el código de JavaScript?
- 24. ¿Hay alguna herramienta para reformatear el código de C#?
- 25. ¿Alguna herramienta para verificar el código duplicado de VB.NET?
- 26. Una herramienta para convertir el código de MATLAB a Python
- 27. Herramienta de flujo de trabajo comaparison: Oozie Vs Cascading
- 28. generador de gráficos de flujo de control para el código C#
- 29. Detalles de call/cc
- 30. Técnicas para visualizar datos
@casperOne: ¿por qué esto "no es constructivo"? Es útil para todos ... ¡y constructivo! – dagnelies
@arnaud Las preguntas de la lista de compras no son constructivas. http://blog.stackoverflow.com/2010/11/qa-is-hard-lets-go-shopping/ – casperOne
@casperOne: el artículo que menciona describe preguntas sobre recomendaciones para comprar hardware, y así sucesivamente. Definitivamente preguntas para rechazar. En este caso, se trata de herramientas y técnicas para resolver un problema en particular, es decir, ayudar a comprender el código grande. Personalmente encuentro el puente entre los dos bastante grande. – dagnelies