21

La base de código con 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.¿Qué es un buen motor de búsqueda de código fuente?

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

Preferiría un viejo motor de búsqueda, sin muchas otras cosas.

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

+0

¿Puede explicar exactamente cuál es el objetivo, p. su propia forja de código fuente, o ¿necesita un visor extendido? ¿El uso principal es search/grep? ¿Y qué esperas "encontrar"? Miré brevemente a los codificadores y no puedo (realmente) imaginar un caso de uso para una empresa, de ahí la pregunta. – Till

+0

¿Y dónde almacena su código base? Si todos tienen una copia local extraída (como debería ocurrir en los VCS modernos), debería ser bastante rápida. Si está trabajando en NFS, puede buscar en la base de códigos tan rápido como pueda transferir todo a través de su LAN. –

+0

@David: ... si insistes en leer el texto de cada archivo mientras buscas. Si indexa los archivos primero, no necesita escanear el texto y puede ser mucho más rápido. Ver mi respuesta –

Respuesta

2

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

1

Si tiene tanto código fuente, es posible que deba dedicar un poco de tiempo a 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/

+0

Esperaba una buena solución envuelta. Pero si no podemos encontrar uno, podríamos terminar construyendo un motor de búsqueda alrededor de Lucene o similar. – toohool

+0

Sí, supongo que realmente tiene un montón de código: tratamos con ~ 1 millón de líneas, y descubrimos que puede manejarse adecuadamente en IDE modernos y buenos (Intelli-J, por ejemplo) en un escritorio poderoso siempre que las cosas estén bien. dividido en módulos. – Peter

-1

tal vez debería invertir algo de tiempo y/o dinero en un editor o IDE que soporta símbolo de marcado. 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.

+0

¿Funcionaría ese enfoque con código no compilado, como archivos ASPX o Javascript?¿Podrían buscarse los comentarios del código? Realmente necesitamos una búsqueda de texto completo. – toohool

+0

Guau, aún recibiendo votos a favor después de 4.3 años. Si estuviera escribiendo esta respuesta hoy, cambiaría el tono. Cuando lo vuelvo a leer ahora, la respuesta original suena un poco sermoneante. – shoover

+0

En estos días uso Sublime Text, que tiene marcadores de sintaxis para cada idioma que he utilizado el año pasado (Java, Groovy, Clojure, Javascript, CSS, Haskell, R), además de una saludable comunidad de usuarios y desarrolladores de complementos. También puede resaltar ASP, y alguien ha proporcionado amablemente un ajuste para [ASPX] (http://myfreakinname.blogspot.com/2013/06/adding-aspx-to-sublime-text-2s-syntax.html). La búsqueda de texto completo (sí, también los comentarios) es muy rápida y puede buscar a través de múltiples proyectos desde el editor. No tengo ninguna afiliación con ST; Solo soy un cliente feliz que paga. – shoover

6

20 minutos es escandaloso! Actualmente, estoy trabajando con un millón de código fuente en línea y la recolección toma 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.

+0

ack es genial. Y probablemente puedas armar una interfaz web rudimentaria en menos de una hora. – Thomas

1

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

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

Lo que está muy claro sobre 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.

3

En Linux utilizo el 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.

El ID de herramientas funcionan en Windows, así, ya sea con cygwin o como standard windows program

8

recomiendo OpenGrok. Hay algunos otros motores, here es una revisión rápida de ellos.

1

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.

0

Ver nuestra SD Source Code Search Engine. 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 de la lengua, se puede ignorar los elementos de langauge irrelevantes a su búsqueda (por ejemplo, ignorar los comentarios, el formato y el espacio en blanco si sólo 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 segundos 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.

0

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 compilar 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 tenía que usar editor de textos tercera parte para buscar en los scripts de base de datos y código fuente VB6.

hice algunas investigaciones y encontró KodeEx (http://kodeex.com) y han sido withit feliz. 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.

Cuestiones relacionadas