2008-09-16 9 views
9

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

12

No puede obtener nada mejor que SourceInsight.

+0

totalmente de acuerdo :) – prakash

+2

SourceInsight es solo Windows, ¿no? OP dijo que estaban usando Linux. –

6

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.

7

utilizo Vim con ctags y taglist plugins. Puede mover el cursor a un nombre de variable y con una combinación de teclas lo llevará a la declaración de la variable (y viceversa). Taglist también mostrará una descripción general de todas las funciones, clases, etc. en una barra lateral.

4

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?

1

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.

0

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.

0

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.

0

Yo uso Anjuta IDE. No está mal. No estoy seguro de cómo se compara con Eclipse IDE.

7

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.

0

Cualquier IDE funcionará bien. Netbeans y Eclipse están basados ​​en Java pero tienen complementos para C/C++

3

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.

0

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.

0

cscope siempre ha sido mi favorito. También hay cbrowser, pero no lo he probado. ctags también se usa mucho.

1

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.

1

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.

0

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!

0

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.

0

Incluso si usted no es un desarrollador de ir para Source Insight

Y si es así, su imprescindible tener :)

1

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).

0

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.

0

Encuentro ID Utils bastante útil. Es como un grep recursivo instantáneo. Hay muchas recetas vim para acompañarlo.

1

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.

http://www.doxygen.org

0

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.

0

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.

1

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.

Cuestiones relacionadas