A veces necesito modificar el código OSS o el código de otras personas (generalmente basado en C, pero a veces C++/Java) y encontrar encabezados grep para tipos, declaraciones de funciones, etc. A medida que sigo el flujo de código y trato de entender el sistema. Existe una buena herramienta que existe para ayudar en la exploración de código. Me encantaría poder hacer clic en un tipo y ser llevado a la declaración o hacer clic en el nombre de una función y ser llevado a su implementación. Estoy en un cuadro de Linux, por lo que las respuestas como "solo uso Visual Studio" no necesariamente me funcionarán. ¡Gracias!¿Cuál es una buena herramienta para ayudar a explorar/seguir el código C?
Respuesta
No puede obtener nada mejor que SourceInsight.
He oído cosas increíbles sobre OpenGrok. Sé que otro equipo en mi lugar de trabajo lo usa y lo encuentran muy a mano. Desde su sitio web:
OpenGrok es una rápida y conveniente fuente búsqueda de código y referencia cruzada motor. Le ayuda a buscar, referencia cruzada y navegar su árbol fuente . Puede comprender varios formatos de archivo de programa y historiales de control de versiones como Mercurial, Git, SCCS, RCS, CVS, Subversion, Teamware, ClearCase, Perforce y Bazar. En otras palabras, permite grok (entender profundamente) la fuente abierta , de ahí el nombre OpenGrok. Es escrito en Java.
El IDE Eclipse es capaz de trabajar con C/C++ además de Java. Hay un write-up sobre cómo configurar Eclipse para el desarrollo C/C++ en el sitio Developer Works de IBM.
editar: ¿Qué ha dicho esto abajo? Es una respuesta válida. Eclipse con el complemento C/C++ le permitirá al autor de la pregunta hacer lo que quiere hacer. No soy el único que ha sugerido, pero los otros no han sido rechazados. Entonces, ¿por qué ha sido rechazado este?
Si está buscando algo simple y omnipresente, intente etags. No va a ser tan bueno como las herramientas de peso pesado, pero está en casi todo y funciona con emacs. Usa ctags para vi.
IntelliJ es bastante bueno como navegador fuente en Linux. Tiene un buen soporte para saltar entre las declaraciones de fuente y función. No lo he intentado con el código C/C++, pero funciona bien con Ruby y Java.
No lo he usado directamente, pero he usado sitios creados con lxr y me pareció muy útil. Convierte su proyecto en archivos HTML numerados en línea y con referencias cruzadas, usando enlaces a funciones de referencias cruzadas y nombres de archivos. Hay algunos ejemplos de fuentes de proyectos indexados con él here.
Parece que no hay una versión más nueva que 2006, pero aún puede funcionar para lo que desee.
Yo uso Anjuta IDE. No está mal. No estoy seguro de cómo se compara con Eclipse IDE.
Doxygen puede generar un conjunto de páginas web que incluyen un navegador de origen. No es tan elegante como un IDE, pero todo lo que necesita es un navegador web.
Cualquier IDE funcionará bien. Netbeans y Eclipse están basados en Java pero tienen complementos para C/C++
Hago un poco en el espacio del kernel, y sigo volviendo al alcance.
Por ejemplo:
$ cd/usr/src/redhat/BUILD/kernel-version
$ cscope -R -p4
Find this C symbol:
Find this function definition:
Find functions called by this function:
Find functions calling this function:
Find this text string:
Change this text string:
Find this egrep pattern:
Find this file:
Find files #including this file:
lo general "en vivo" en c- alcance cuando se trabaja en el proyecto de alguien más. Lo utilizo para abrir archivos con "gvim" (mi IDE), edito cosas, luego salgo "de regreso" a c-scope, me ayuda a mantener la tarea enfocada.
Creo que cscope se puede configurar para que funcione con vim y emacs, aunque he visto personas que usan otros editores también.
mejor de las suertes.
Uso kscope, que usa cscope en segundo plano, pero también proporciona listas de funciones, etc. Parece que maneja bien proyectos grandes como el kernel de Linux. El kscope homepage tiene una buena descripción concisa de lo que hace y lo que no hace.
cscope siempre ha sido mi favorito. También hay cbrowser, pero no lo he probado. ctags también se usa mucho.
ctags es muy útil. Hay dos pasos involucrados. Primero ejecute los códigos de programa en todos sus directorios fuente e incluya. Esto crea un archivo llamado 'etiquetas' en el directorio local. ctags * .c * .h funcionaría bien si toda su fuente está en un único directorio. Cuando trabaja con el origen en múltiples directorios, puede valer la pena ejecutar ctags en múltiples ubicaciones. Luego, dentro de vi, con su cursor sobre cualquier función, tipo definido o variable, use ctl-] para ir a la definición de esa entidad. Usa etags si estás usando emacs.
Apoyo el uso de doxygen.
Esta herramienta generó un javadoc como un montón de páginas html, lo que permite indexar todo el código, navegar en él (¿dónde se usa esta función y por qué función ...), como se puede hacer en un IDE. Es muy fácil hacerlo funcionar.
Tuve una vez para mantener 2000 archivos de código C de un proyecto C de 15 años. Me llevó una hora indexar el código con doxygen y proporcionar a los demás desarrolladores el documento generado. (Lo sé, esta frase suena como un complemento, pero es verdad ... Es realmente una buena herramienta)
Una herramienta maravillosa, que funciona en todos los lenguajes tipo C.
Uso el Understand for C++. Es una herramienta muy útil para manejar grandes cantidades de código. También puede calcular estadísticas de códigos y dibujar gráficos de llamadas. ¡Debe tener!
He tenido un gran éxito con doxygen.Para obtener mejores resultados (especialmente al crear documentación para C++) instale graphviz y habilítelo en su archivo de configuración doxygen.
Esto generará automáticamente mapas de dependencia y diagramas de clase que están vinculados con el resto de la documentación html.
Incluso si usted no es un desarrollador de ir para Source Insight
Y si es así, su imprescindible tener :)
Doxygen es maravilloso. Tuve que encontrar varias bases de código heredado en las que nunca antes estuve involucrado, y ha sido fantástico (aunque las bases de código no estaban documentadas con el formato Doxygen).
cscope. (quería modificar otra publicación de alcance, pero todavía no tengo karma).
- de búsqueda y reemplazo global
- encuentran todos los lugares se llama una función
- encontrar todos los lugares llamados por una función
- encontrar archivos incluidos este archivo.
muy simple uso: $ cscope -R
si usted no sabe VI, a continuación, cambiar las variables ambientales editor y espectador a su editor preferido.
Encuentro ID Utils bastante útil. Es como un grep recursivo instantáneo. Hay muchas recetas vim para acompañarlo.
Ir a Doxygen y establecer EXTRACT_ALL a YES. Es simplemente poderoso y fácil. Una vez que lo ames, puedes mantenerlo en todas las plataformas e idiomas.
utilizo y al igual que la herramienta de software libre GNU global.
Se puede encontrar un motor de búsqueda de código fuente sensible al idioma en SD Source Code Search Engine. Puede manejar muchos idiomas al mismo tiempo. Las búsquedas se pueden realizar para patrones en un idioma específico, o patrones en todos los idiomas (como "encontrar identificadores que impliquen IMPUESTOS"). Al ser sensible a tokens de idioma, se reduce el número de falsos positivos, , ahorrando tiempo al usuario. Comprende C, C++, C#, COBOL, Java, ECMAScript, Java, XML, Verilog, VHDL y varios otros idiomas.
Uso Source-Navigator (TM) desde here. Es bastante impresionante y ayuda mucho. Está escrito en Tcl/Tk, está disponible como un ejecutable para Windows y como código fuente listo para compilar en * nix.
Si está involucrado en proyectos que tienen una combinación de código HLL junto con Assembly, recomiendo Opengrok, recientemente cambié a Opengrok y lo encuentro increíble, Opengrok + Firefox + Extensions es la mejor combinación en mi opinión, algunas extensiones de Firefox como Scrapbook, etc. le permiten modificar y agregar notas mientras navega por el código, una vez más esto es principalmente para 'navegar' a través del código y no para modificarlo sobre la marcha.
- 1. ¿Qué es una buena herramienta para anotar código?
- 2. Repositorio de código. ¿Cuál es una buena?
- 3. refactorización del código vba: ¿hay alguna herramienta para ayudar?
- 4. ¿Cuál es una buena manera de depurar el código haskell?
- 5. ¿Qué es una buena herramienta Web Crawler?
- 6. ¿Dónde está la "herramienta de pila" para Android? (para ayudar a depurar el código nativo de C++)
- 7. ¿Qué es una buena herramienta para construir oleoductos?
- 8. herramienta para explicar el código C
- 9. ¿Cuál es una buena herramienta para analizar la dependencia del ensamblado en la aplicación .NET
- 10. ¿Cuál es una buena estructura de código para el procesamiento de vértices independiente de api?
- 11. ¿Existe una buena herramienta de análisis de dependencia para Python?
- 12. ¿Hay alguna herramienta para ayudar con la compleja lógica 'si'?
- 13. Una herramienta para convertir el código de MATLAB a Python
- 14. Herramienta para visualizar el flujo de código (C/C++)
- 15. buena estrategia para evitar el código duplicado
- 16. ¿Hay alguna herramienta para convertir Managed C++ a C++/CLI?
- 17. ¿Cuál es una buena regla para cuándo preceder a los miembros con 'esto' (C#)?
- 18. ¿Cuál es una buena alternativa de código abierto para Kannel para la puerta de enlace SMS?
- 19. ¿Cuál es una buena estructura de proyecto en C
- 20. ¿Cuál es una buena herramienta para la investigación del uso de la conexión a la base de datos en Java?
- 21. ¿Cuál es una buena implementación de eventos débiles para Silverlight?
- 22. ¿Cuál es su herramienta de depuración de código abierto favorita?
- 23. Buena herramienta de creación de informes de código abierto/marco para WPF (C#)
- 24. ¿Cuál es el equivalente de VB.NET a este código C#?
- 25. ¿Qué es una buena relación de Código a prueba?
- 26. Buena herramienta para recopilar problemas, mejoras, ideas
- 27. ¿Qué es una buena herramienta de limpieza de CSS?
- 28. ¿Cuál es una buena configuración para noCompressionUserAgents en Tomcat?
- 29. ¿Cuál es una buena clase de muestra para demostrar TDD?
- 30. Herramienta de código abierto para encontrar el código de C# inalcanzable/no utilizado
totalmente de acuerdo :) – prakash
SourceInsight es solo Windows, ¿no? OP dijo que estaban usando Linux. –