(Soy uno de los creadores de Sourcegraph ).
Depende de lo que quieras decir con “más simple”; es decir, qué quiere que haga y cuánto código desea indexar. Al igual que prácticamente cualquier otro sitio web grande (Google, Twitter, etc.), es fácil, divertido y educativo hacer una versión simple, pero es desafiante hacer que funcione a escala y lidiar con todos los casos límite.
Si solo quiere algo como Sourcegraph en el código de un único repositorio, puede usar nuestra cadena de herramientas de análisis de código abierto, srclib . Analizará el código y las dependencias y descargará JSON en el directorio .srclib-cache. Luego puede usar los complementos del editor srclib o el programa “src” incluido para consultar esos datos o escribir otras aplicaciones que los consuman.
- ¿Cómo puede un desarrollador de software profesional que trabaja, a mediados de los años 20, sin antecedentes financieros pasar a una carrera como comerciante de Wall Street?
- ¿Los informáticos y los desarrolladores de software tienen el mismo nivel de experiencia?
- ¿Sería un problema si quiero convertirme en un desarrollador de software promedio y no competir con esos genios?
- ¿Puedo cambiar mi carrera de ingeniero civil a desarrollador de software a los 36 años?
- Cómo adquirir experiencia de un desarrollador de software guru rápidamente
Lo bueno de srclib es que es una capa de abstracción entre el analizador de código y la aplicación que consume el análisis. Eso significa que sus herramientas no necesitan ser específicas del idioma, y sus analizadores de idiomas no necesitan ser específicos de la aplicación.
Dado que los datos de análisis de código son solo JSON (consulte Modelo de datos en los documentos srclib ), es fácil de usar. Te encontrarás con algunas cosas difíciles cuando quieras agregar enlaces y resaltado de sintaxis al código, y otras cosas por el estilo, pero hemos lanzado una gran cantidad de código fuente abierto para ayudarte con eso (como el paquete de anotaciones ).
En general, escribir una aplicación que utiliza la salida srclib para mostrar cosas ingeniosas sobre su código es bastante fácil. Lanzamos srclib con ese objetivo, y la gente ya ha creado complementos de editor y herramientas de análisis de licencias. La principal dificultad estará en escribir la aplicación que la usa, no en nada relacionado con el análisis de la fuente.
Si desea escribir las partes de análisis de código usted mismo, puede mirar las cadenas de herramientas individuales para cada idioma para tener una idea de lo que está involucrado: srclib-go , srclib-java , etc. Hackear estos requiere una buena comprensión de los compiladores y un mucha intuición de sistemas (CS “street smarts”) para tratar con sistemas de compilación, reproducibilidad, casos extremos, incompatibilidades de versión, etc. Se necesita de unos días a unos meses para hacer una cadena de herramientas de trabajo completa para un idioma, dependiendo de El estado de las herramientas existentes. Una vez que haya creado 1 o 2 cadenas de herramientas, las siguientes son significativamente más fáciles.
Si está interesado en escribir una cadena de herramientas de análisis de código para un nuevo idioma, avíseme y con gusto le asesoraremos. También puede ejecutar “src push” con su nueva cadena de herramientas instalada localmente para enviar el código y la salida de análisis a Sourcegraph, y cualquier otra persona lo indexará y podrá explorar.
Hacer que Sourcegraph funcione en repositorios, para múltiples lenguajes de programación, en diferentes confirmaciones (para mostrar diferencias estructurales) y a escala (más de 100.000 repositorios y repositorios gigantes gigantes) es mucho más difícil. Me encantaría explicar los desafíos que hemos enfrentado, pero la pregunta es sobre la construcción de una versión más simple de Sourcegraph , por lo que está más allá del alcance por ahora. 🙂 (Si tiene curiosidad, consulte nuestra charla de Google I / O 2014 sobre Sourcegraph ).
(PD: si usted o alguien más que está leyendo esto está interesado en estas cosas, ¡únase a nosotros para construir Sourcegraph! Estamos contratando y sucederán muchas cosas emocionantes en los próximos meses).