2012-08-05 18 views
9

Tenemos una base de código enorme, vieja y horrible que hace que sea casi imposible encontrar cosas cuando lo necesite. Estamos trabajando para mejorarlo, claro ... pero a menudo me encuentro realizando greps recursivos masivos para buscar en los contenidos de los archivos y encontrar dónde se usan las cosas.indexación de texto completo de línea de comandos?

¿Existe alguna herramienta que pueda usar para construir un índice de texto completo de archivos de texto en un directorio y luego consultarlo desde la línea de comandos?

Prefiera algo que pueda ejecutarse en el espacio de usuario y no necesite un daemon. Tenemos muchos usuarios en nuestro servidor de desarrollo, por lo que quiero algo que pueda buscar a través de mi instancia de la base de código.

+0

¿Algún idioma o entorno en particular? –

+3

¿Has probado ['ack'] (http://betterthangrep.com)?Normalmente encuentro que es lo suficientemente rápido sin necesidad de un índice de texto completo, incluso en proyectos realmente grandes. –

+0

@GregHewgill woo, eso se ve interesante. Bonito nombre de dominio también :) –

Respuesta

5

Soy un gran fan de "GID" ("id-utils" aka):

uso es simple:

  1. Instalar ID- utils con su gestor de paquetes favorito (por ejemplo, "sudo apt-get install" o "yum")

  2. "cd" a la raíz de un directorio de origen y ejecutar "mkid"

  3. Usted puede usar desde la línea de comandos

  4. También puede usarlo desde "vim" o cualquier número de otras herramientas.

+0

PD: "ctags" es otra cosa buena para mirar: http://ctags.sourceforge.net/, http://www.thegeekstuff.com/2009/04/ctags-taglist-vi -vim-editor-as-sourece-código-navegador / – paulsm4

2

Russ Cox escribió a series of articles describing how the Google Code Search algorithm worked. Él vuelve a implementar una versión simplificada del algoritmo en a set of command-line tools that can do fast regex searches over a local codebase.

Una alternativa es usar algo como ctags para crear un índice de identificadores utilizados en el código. Muchos editores (incluido Vim, que uso) pueden usar este archivo de etiquetas para saltar rápidamente a definiciones de identificadores.

1
cd /path/to/project 
ctags -R 

esto creará un archivo tags que Vim use, entonces:

vim -t someFunctionName 

abrirá vim en la definición de función!

También hay algunos atajos de teclado para hacer la vida más simple.

CRTL+] will jump to the definition of the method under the cursor 
CRTL+t will go back 
0

Tengo una necesidad similar de trabajar en un gran proyecto de C++. Después de encuestar algunas herramientas, descubrí que id-utils es la mejor opción porque es muy rápido para generar índices y buscar patrones.

Sobre la base de id-utils, hice una herramienta y vim plugin de línea de comandos para arreglar mi necesidad:

https://github.com/fcamel/gj

espero que ayude.

Cuestiones relacionadas