development-environment search-engine code-search-engine

development environment - ¿Qué es un buen motor de búsqueda de código fuente?



development-environment search-engine (11)

La base de código en la que trabajo es enorme, y la reducción demora unos 20 minutos. Estoy buscando un buen motor de búsqueda de código fuente basado en la web ... algo así como una versión intranet de koders.com.

Lo único que he encontrado es Krugle Enterprise Edition, que no publica sus precios ... y si tiene que preguntar, no puede pagarlo.

Realmente preferiría un viejo motor de búsqueda sin muchas otras cosas.

La fuente es principalmente ASP.NET/C# y Javascript.


Quizás deba invertir algo de tiempo y / o dinero en un editor o IDE que admita el etiquetado de símbolos. Solo necesita hacer una pasada por todo el árbol de origen para etiquetarlo, y luego el editor usa una búsqueda de índice o una búsqueda de mapa para encontrar la definición o referencias de símbolos.

Algunos ejemplos de editores o IDE que admiten el etiquetado son Eclipse, Visual Studio, SlickEdit. Algunos IDEs pueden llamar a la característica Navegador de símbolos o algo similar.


Si tienes tanto código fuente, es posible que necesites invertir un poco de tiempo en configurar un motor de búsqueda para indexarlo. Recomendaría Lucene: es gratis, rápido, es bastante fácil configurar un índice poderoso sobre cualquier contenido para cualquier persona con experiencia en programación.

http://lucene.apache.org/


Lxr funciona muy bien en grandes bases de código, como se demostró con el kernel de Linux . Creo que es solo para C (no especificaste los idiomas utilizados).


20 minutos es indignante! Estoy trabajando con un millón de código fuente en línea en la actualidad y el almacenamiento demora unos segundos como máximo (utilizo ack ). Nuestros directorios personales se almacenan en un servidor de archivos y se montan en NFS, y para acelerar el almacenamiento, lo hacemos mientras estamos conectados al servidor de archivos. No estoy seguro de cuánto demora NFS, pero ciertamente es más largo.

También realizamos operaciones de control de fuente mientras estamos conectados al servidor de archivos, por las mismas razones de rendimiento.


Como dices ''grepping'', imagino que no estás desinteresado en las soluciones de línea de comandos.

Una herramienta como ctags indexará y buscará bases de código C # y JavaScript (entre muchos otros).

Lo que está muy claro sobre los ctags es que se puede combinar con vim con el plugin de taglist para permitir la exploración del código fuente o con vim omnicomplete para habilitar la finalización del código.


En Linux utilizo GNU ID Utils. Estos tienen funciones similares a grep pero funcionan desde un índice, por lo que son increíblemente rápidos. Ejecuta mkid para crear un índice y luego una de las otras utilidades, como "gid", que es la versión de ID Tools de grep grep en el índice. Tengo un trabajo cron que ejecuta mkid ocasionalmente.

Las herramientas de ID también funcionan en Windows, ya sea con cygwin o como un programa de Windows estándar


He usado cs2project por un tiempo, es un motor de búsqueda de código abierto c # basado en Lucene.NET. Desafortunadamente ya no se está desarrollando.



Tuve un problema similar. Trabajo para una compañía de software donde el proyecto incluye scripts c #, c ++, asp.net, db e incluso código fuente vb6 (sí, es un dolor de cabeza la compilación de varios proyectos vb6 cuando no hay un concepto de solución como en la versión posterior de visual studio. ..)

He estado usando Visual Studio 2010 pero tuve que usar el editor de texto de terceros para buscar en scripts db y código fuente vb6.

Investigué un poco y encontré KodeEx (http://kodeex.com) y me sentí feliz con él. Es una herramienta de búsqueda de código fuente basada en un índice. No tiene que construir nada (como otras personas le sugirieron que haga con Lucene. Lucene es un buen proyecto de código abierto por cierto =)). Simplemente instálalo y deja que indexe tus proyectos. Después de eso, generalmente devuelve el resultado en unos pocos segundos.


Vea nuestro motor de búsqueda de código fuente SD . Language aware y maneja muchos idiomas (C, C ++, C #, Java, ObjectiveC, PHP, VB.net, VB6, Ada, Fortran, COBOL, ...). Toma 2.8 segundos para buscar en Kernal Linux (7.3 millones de líneas, más de 18000 archivos).

Debido a que es consciente del idioma, puede ignorar los elementos del lenguaje irrelevantes para su búsqueda (por ejemplo, ignorar comentarios, formatear y espacios en blanco si solo está interesado en un identificador o una expresión). Puede buscar dentro de identificadores, cadenas y comentarios. Tiene una opción de búsqueda de cadena de expresión regular completa si realmente quieres hacer eso.

Se ha utilizado para sistemas de 10 de millones de líneas de código, y en un caso que conocemos, un sistema con más de un millón de archivos.


Recomiendo OpenGrok . Hay algunos otros motores, aquí hay una revisión rápida de ellos.