Pregunta:
¿Software para buscar en sus propias bibliotecas de código fuente?
panofish
2014-10-14 19:22:40 UTC
view on stackexchange narkive permalink

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 reutilizar en código nuevo. A veces busco cadenas crípticas como = ~ , porque estoy buscando una expresión regular particular en uno de mis programas de 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 colores 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 hasta ahora para este propósito.

Las soluciones grep y grep son agradables, pero estoy más interesado en programas con una interfaz de usuario y disponibles en Windows.

Utilizo Total Commander (también puedes usar Double Commander], que es gratis) y presiono `ALT` +` F7` para buscar. Por supuesto, obtengo muchas más funciones que solo buscar desde TC, y * nunca * uso el Explorador de Windows.
También puede probar [Search Monkey] (http://searchmonkey.embeddediq.com/) aunque tiene más funciones para Linux que para Windows.
Seis respuestas:
#1
+4
Ira Baxter
2015-06-08 07:57:47 UTC
view on stackexchange narkive permalink

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 los elementos del idioma.

Esto tiene la ventaja de ignorar los espacios en blanco y los comentarios (específicos del idioma) en las búsquedas, excepto donde desee incluirlos, pudiendo buscar números y cadenas en términos de sus valores reales de una manera independiente del idioma en lugar de una variante de texto específica, etc. La indexación permite búsquedas en millones de líneas y decenas de miles de archivos casi instantáneamente.

Por el contrario, una solución similar a grep, usando 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 de 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 los espacios en blanco (saltos de línea o comentarios) fácilmente 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.

  • Indexa archivos de acuerdo con lexemas específicos del idioma
  • Las consultas se pueden formular en una combinación de entidades genéricas del idioma ("identificador") o entidades específicas del idioma ("cadena de imagen "en COBOL)
  • Las consultas omiten espacios en blanco y comentarios
  • Menos falsos positivos, búsqueda mucho más rápida que grep
  • La capacidad de registro permite registrar coincidencias
  • Haga clic en los resultados para ver el texto encontrado en la fuente del archivo
  • Puede configurar para iniciar el editor en los archivos encontrados en las ubicaciones encontradas
  • El indexador se ejecuta en Windows; los resultados se pueden compartir entre varios usuarios
  • La GUI basada en Java se ejecuta en Windows y Linux

Screen shot of search across Linux code base

Divulgación completa: estoy el director de Semantic Designs

#2
+3
Angelo Fuchs
2014-10-15 15:38:16 UTC
view on stackexchange narkive permalink

Yo uso grep. Como 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 un texto muy sofisticado herramienta de búsqueda que puede buscar todo tipo de texto y no tiene límite para lo que desea buscar.

Su = ~ se buscaría así:

  grep -r "= ~".  

Mientras que . hace referencia al directorio actual, -r hace que búsqueda recursiva. Entonces, si tiene sus programas agrupados por idioma, puede hacer cd en 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 llega a algo. En general, tengo una idea aproximada de dónde estaría el código específico que busco, por lo que solo hago grep sobre los directorios adecuados.

Otro inconveniente es la complejidad. Para llegar a ser bueno con este enfoque, necesitará pasar algún tiempo con ellos.

grep se vuelve cada vez más útil cuanto más comandos de linux / unix conozca. Por ejemplo, podría usar buscar para encontrar todos los archivos que desee (como todos los archivos perl) y luego usar grep para saber si hay algo allí. Yo (como desarrollador de Java) a veces necesito buscar un archivo de clase dentro de un frasco, pero tengo como miles de millones de frascos por ahí y no sé dónde está. Entonces, tengo una línea de comando que busca frascos, enumera su contenido y genera solo aquellos que tienen el archivo requerido en ellos. Podría usar la misma técnica para buscar también en el contenido de los archivos, etc.

Entonces, para este problema específico: grep. Pero, en general, recomiendo toda la cadena de herramientas que viene con su Unix.

#3
+3
a_henderson
2014-12-14 23:30:37 UTC
view on stackexchange narkive permalink

Tiendo a usar Agent Ransack para esto.

  • Gratis
  • Microsoft Windows XP (SP3) / 2003 / Vista / 2008 / 7/2012/8 / 8.1
  • Admite expresiones regulares en el nombre del archivo y el texto de la consulta
  • Vista previa de la línea coincidente de los archivos dentro de la ventana de búsqueda
  • Opciones para exportar resultados, y guardar los criterios de búsqueda

Captura de pantalla

Screenshot of Agent Ransack window

#4
+1
Tymric
2014-10-15 14:19:34 UTC
view on stackexchange narkive permalink

Puede probar CodeSearch, ya que está diseñado específicamente para tal fin. Las características incluyen:

  • Multiplataforma
  • Código abierto
  • Indexa sus archivos de código fuente para una búsqueda más rápida
  • Admite expresiones regulares
  • Admite la búsqueda de sintaxis de código
  • Tiene un paquete Emacs para que pueda ejecutarlo desde dentro de su editor
#5
+1
kenorb
2015-06-08 18:34:51 UTC
view on stackexchange narkive permalink

Aquí hay algunas herramientas útiles:

  • ack que es una herramienta como grep, optimizada para programadores,
  • rak es un reemplazo de grep en Ruby puro,
  • grin puede ayudar a buscar directorios llenos de código fuente (basado en Python),
  • Silver Searcher es una herramienta para buscar código (un clon de Ack, pero desde entonces los conjuntos de funciones han divergido ligeramente).
Vale la pena mencionar que grin es compatible con python re completo y, por defecto, omite los directorios .git, .svn, etc.
#6
+1
veritaS
2017-12-06 02:23:41 UTC
view on stackexchange narkive permalink

He aprendido a confiar en gran medida en la búsqueda inforapid & replace Link

Al principio era muy escéptico acerca de esto porque la interfaz de usuario parece muy antigua (2003, trabajando 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.

  • buscar o reemplazar
  • en todos los tipos de archivos
  • en varias subcarpetas
  • freeware para licencia privada
  • licencia comercial 25 €
  • búsqueda rápida
  • ruta de archivo, archivo & (múltiples) declaraciones de línea
  • guardar sesión de búsqueda
  • iniciar múltiples sesiones de búsqueda simultáneamente

enter image description here

Para obtener un equivalente de [etiqueta: gratis], consulte nuestro http://findandreplace.sourceforge.net/


Esta pregunta y respuesta fue traducida automáticamente del idioma inglés.El contenido original está disponible en stackexchange, a quien agradecemos la licencia cc by-sa 3.0 bajo la que se distribuye.
Loading...