2010-01-26 9 views
19

escribo/modificar el código en varios formatos de archivo como Perl, HTML, CSS, PHP, JavaScript, escritura autohotkey, etc ...¿Cómo se busca a través de sus propias bibliotecas de código fuente?

A menudo busco mi biblioteca personal de código fuente de ejemplos de sintaxis o lógica compleja para reutilizar en un nuevo código. O bien, buscaré a través de un árbol de directorios las referencias de código a una cadena en particular (por ejemplo, todas las referencias a un estilo de css particular dentro de perl, php, html y javascript). A veces incluso busco cadenas crípticas como = ~, porque estoy buscando una expresión regular particular en uno de mis programas perl.

A veces busco código existente usando copernic, pero desafortunadamente solo puede buscar palabras y automáticamente ignora cualquier sintaxis de programación. La búsqueda de archivos de Windows 7 parece peor que la búsqueda de archivos de Windows XP.

Mi pregunta es ... ¿Cómo se busca a través de sus propias bibliotecas de código fuente?

+3

Las preguntas del tipo de encuesta deben ser CW. Además, esto está un poco demasiado cerca de ser un material de SU. –

+0

No es exactamente un duplicado, pero está estrechamente relacionado: http://stackoverflow.com/questions/4101/where-do-you-store-your-code-snippets http://stackoverflow.com/questions/78756/what-do -you-use-to-keep-notes-as-a-developer-closed http://stackoverflow.com/questions/33994/what-code-snippet-editor-do-you-use http://stackoverflow.com/questions/212634/best-application-for-storage-code-snippets – dmckee

Respuesta

5

Normalmente utilizo la función de búsqueda en mi IDE (nuSphere phpEd). Es bastante rápido y me permite filtrar por tipos de archivo. La función de búsqueda de Windows es inútil, y de alguna manera se las arregla para empeorar en cada nueva versión.

De todos modos, hace una pregunta sobre programming-friendly search programs hace un tiempo. Tal vez una de las respuestas ayuda.

+0

Gracias Pekka ... ese enlace es muy útil. – panofish

3

Utilice el escritorio de Google para indexar y buscar texto completo en sus archivos de origen.

+0

El escritorio de Google ha sido descontinuado. http://googleblog.blogspot.com/2011/09/fall-spring-clean.html –

6

Con Cygwin:

$ find /path/to/lib -name \*.pm | xargs grep -l foo 

asegúrese de dar operadores cobardes por lo que la cáscara de los deja solos, por ejemplo ,

$ find . | xargs grep '=~' 
0

Cuando tengo que hacer ese tipo de búsqueda (es decir, quiero encontrar una porción exacta de un código), me eiter utilizar la "búsqueda en el directorio", o "buscar en el directorio de regex "fonctionnality de Eclipse PDT (el IDE con el que estoy trabajando), o termine usando grep en la línea de comandos.

(Para aquellos que están en las ventanas y/o no les gusta la CLI, hay algunas herramientas gráficas que actúan como grep - He visto algunos colegas los utilizan)

3

Descargar Cygwin y aprenda a usar Grep que se incluye con él. Es posible que pueda obtener una versión nativa de grep, pero Cygwin tiene muchas cosas útiles, así que simplemente instalo todos los paquetes disponibles.

1

Abrí el proyecto (s) Creo que el código deseado está en y uso la opción "Buscar en el proyecto" de mi editor.

1

OSX tiene algo llamado SpotLight y una interfaz de comando llamada mdfind. Esas son las mejores herramientas de búsqueda local que puede tener si está en una Mac.

+0

+1 para Spotlight: tengo más de 25 años de código que he escrito en mi Mac que puedo buscar instantáneamente usando Spotlight –

13

Solía ​​usar el truco find | xargs grep hasta que encontré ack. Ahora uso eso bastante.

+0

Voy a registrar en este. – panofish

+3

Realmente es mejor que grep. El único problema para mí es que a veces trabajo con idiomas menos comunes y no reconoce sus archivos fuente como archivos que debería leer. Sin embargo, puede agregar más tipos de archivos a la lista de tipos que admite, por lo que no es tan malo. – pib

0

Tienen un esquema de nombres consistente. ¿Es memset() o setmem()? InitializeUart() o UartInitialize() o UARTInitialize() o UARTInit()?

0

En un entorno de Windows utilizo Examine32. Es un buscador de cadenas genérico bastante útil (¿es una frase válida? :-)).

0

Para el código C, yo uso el estilo de código BSD, que establece que una función llamada foo debería definirse así:

 
char * 
foo(int x) 
{ 
    ... 
} 

Con este estilo, la definición de función es el único lugar en el código fuente, donde el nombre de la función puede aparecer al comienzo de una línea. Entonces es sólo una cuestión de usar grep:

 
grep '^foo' **/*.c 

Este truco filtra usos de la función, para concentrarse en la definición.

Cuando **/*.c produce demasiados nombres de archivo (por árboles muy grandes de código fuente), entonces find se va a utilizar:

 
find src -name \*.c -exec grep '^foo' '{}' + 

Nota aquí el uso de + con -exec: este reemplaza el uso de xargs.

0

lo general sé que estoy a punto de hacer algo un poco fastidioso, así que golpe un comentario cerca de la sección. El comentario siempre debe tener suficientes palabras clave para que encuentre lo que busco.

Entonces es solo el caso de alguna combinación de arseabout find/grep.

0

Ya que paso la mayor parte del día frenéticamente escribir bits aleatorios de código en Emacs con la vana esperanza de que uno de ellos va a hacer algo útil, que a menudo utilizan los emacs encontrar-dired comando:

  • Meta-x find-dired
  • introduzca la ruta del directorio en el que creo que voy a encontrar el código interesante
  • Cuando se me pide encontrar argumentos, introduzca (por ejemplo): -name '*.rb'
  • Wh en él aparece la lista de archivos coincidentes, %m. para seleccionarlos todos (yay para el mapeo de teclas obvio de Emacs)
  • Luego meta-A e ingrese una cadena de búsqueda.
  • Meta-, (hay otro mapa de teclas obvio para usted) para ir a la próxima partida.

Si este no es un gran ejemplo de una herramienta de $ 20 que se utiliza para resolver un problema de diez centavos, no sé lo que es.

0

El enlace proporcionado por Pekka fue la mejor respuesta para mí hasta ahora.

Powergrep es la solución más cercana a lo que estaba buscando. No es perfecto, pero para una solución de Windows GUI ... me gusta.

0

Ver SD Source Code Search Engine.Esto divide el código fuente en fragmentos correspondientes a los elementos de cada idioma (palabras clave, identificadores, cadenas, constantes, números, operadores). Puede formular búsquedas restringidas a un solo tipo de archivo (de código), a un conjunto particular de archivos, a identificadores que coincidan con foo en todos los archivos, setc.

El motor de búsqueda indexa previamente el código para habilitar las búsquedas en miles de archivos mucho más rápido que grep, muestra los hits en una ventana GUI y el código fuente completo de un golpe seleccionado en otro. Puede iniciar su editor en el código fuente.

Cuestiones relacionadas