Escribo/modifico código en múltiples formatos de archivo como Python, MySQL, Perl, HTML, CSS, PHP, JavaScript, AutoHotkey, etc.
A menudo busco en mi biblioteca personal de código fuente ejemplos de sintaxis o lógica compleja para reutilizarlos en código nuevo. A veces busco cadenas crípticas como =~
, porque estoy buscando una expresión regular en particular en uno de mis programas Perl.
A veces busco código existente usando Copernic , pero desafortunadamente solo puede buscar palabras e ignora automáticamente cualquier sintaxis de programación. También carece de codificación de color de sintaxis de lenguaje de programación.
Mi pregunta es: ¿Cómo busca en sus propias bibliotecas de código fuente? ¿Qué software es bueno para esto? Copernic es imperfecto, pero sigue siendo la mejor herramienta que he encontrado para este propósito.
Las soluciones grep y similares a grep son buenas, pero estoy más interesado en programas con una interfaz de usuario y disponibles en Windows.
El motor de búsqueda de código fuente (SCSE) de Semantic Designs utiliza escáneres específicos del idioma para dividir cada archivo fuente en sus lexemas constituyentes, indexa todo y luego proporciona una búsqueda basada en GUI en la base del código en términos de elementos del idioma.
Esto tiene la ventaja de ignorar los espacios en blanco (específicos del idioma) y los comentarios en las búsquedas, excepto donde desee incluirlos, pudiendo buscar números y cadenas en términos de sus valores reales de forma independiente del idioma en lugar de una variante de texto específica. , etc. La indexación permite realizar búsquedas en millones de líneas y decenas de miles de archivos casi al instante.
Por el contrario, una solución similar a grep, que utiliza un FSA extremadamente rápido, abrirá y leerá todos los archivos en algún directorio raíz. Hacer que grep ignore todos los archivos que no son texto puede ser difícil si hay muchas extensiones o no hay extensiones. Abrir decenas de miles de archivos y leerlos con grep lleva mucho tiempo (decenas de segundos). Obtiene muchos falsos positivos porque escanea el código del programa y los comentarios. No puede ignorar fácilmente los espacios en blanco (saltos de línea o comentarios) en una expresión regular, por lo que son difíciles de escribir.
En resumen, SCSE busca más rápido que grep, utilizando consultas que son más fáciles de escribir, con menos resultados falsos positivos.
Divulgación completa: soy el director en Semantic Designs
Yo uso grep . Mientras almaceno todo mi código en la misma ruta en mi sistema de archivos, abro mi shell de Linux (pero eso también funcionará a través de cygwin en Windows) y cd al directorio.
Grep es una herramienta de búsqueda de texto muy sofisticada que puede buscar todo tipo de texto y no tiene límite para lo que desea buscar.
Tu =~
sería buscado así:
grep -r "=~" .
Mientras que .
hace referencia al directorio actual, -r
hace que la búsqueda sea recursiva. Entonces, si tiene sus programas agrupados por idioma, puede ingresar a su directorio perl y buscar solo allí.
grep tiene desventajas, la primera sería la velocidad. No tiene un índice, por lo que cada búsqueda recorre secuencialmente todo su código hasta que se encuentra algo. En general, tengo una idea aproximada de dónde estaría el código específico que busco, por lo que solo reviso los directorios apropiados.
Otro inconveniente es la complejidad. Para volverte bueno con este enfoque, necesitarás pasar algún tiempo con ellos.
grep se vuelve más y más útil cuantos más comandos de linux/unix conoce. Por ejemplo, podría usar find
para encontrar todos los archivos que desea (como todos los archivos perl) y luego usarlos grep
para saber si hay algo allí. Yo (como desarrollador de Java) a veces necesito buscar un archivo de clase dentro de un jar, pero tengo millones de jars por ahí y no sé dónde está. Así que tengo una línea de comando que encuentra archivos jar, enumera su contenido y genera solo aquellos que tienen el archivo requerido. Podría usar la misma técnica para buscar también a través del contenido de los archivos, etc.
Entonces, para este problema específico: grep. Pero en general recomiendo toda la cadena de herramientas que viene con tu Unix.
Tiendo a usar Agent Ransack para esto.
Captura de pantalla
Puedes probar CodeSearch ya que está hecho específicamente para tal propósito. Las características incluyen:
Aquí hay algunas herramientas útiles:
He aprendido a depender en gran medida de la búsqueda rápida y el reemplazo de Link
Al principio era muy escéptico sobre esto porque la interfaz de usuario se ve muy antigua (2003, funciona con Windows 10), pero después de usarlo varias veces me di cuenta de que el programa era la respuesta a todos mis problemas y se puede usar para todo tipo de propósitos
Mawg dice que reincorpore a Monica
ALT
+F7
para buscar. Por supuesto, obtengo muchas más funciones que solo buscar desde TC, y nunca uso el Explorador de Windows.Mawg dice que reincorpore a Monica