Entender codigos base desconocidos es uno de los desafios mas dificiles en el desarrollo de software. Code-Graph de FalkorDB aborda este problema de una manera novedosa: transformando repositorios de codigo fuente en grafos de conocimiento completamente consultables que puede interrogar en lenguaje natural.
En lugar de leer archivos linealmente o confiar en herramientas de busqueda de codigo que tratan el codigo como texto plano, Code-Graph analiza su codigo base a nivel de Arbol de Sintaxis Abstracta (AST), extrayendo cada entidad significativa – clases, funciones, metodos, modulos, argumentos, variables – y mapeando sus relaciones en un grafo de propiedades almacenado en FalkorDB. El resultado es una representacion estructurada y navegable de todo su codigo base que soporta consultas en lenguaje natural como “Muestrame todas las clases que dependen de la clase DatabaseConnection” o “Encuentra funciones de utilidad no utilizadas en el modulo auth.”
graph TD
A[URL de Repositorio GitHub] --> B[Parser AST]
B --> C[Extraccion de Entidades]
B --> D[Mapeo de Relaciones]
C --> E[Grafo de Propiedades FalkorDB]
D --> E
F[Consulta en Lenguaje Natural] --> G[Traduccion LLM a Cypher]
G --> E
E --> H[Resultados de Consulta]
H --> I[Resumen LLM de Respuesta]
I --> J[Desarrollador]Que es Code-Graph?
Code-Graph es una herramienta de desarrollador open-source que convierte repositorios de codigo fuente en grafos de conocimiento consultables. Fue creada por el equipo de FalkorDB para demostrar el poder de las bases de datos de grafos en escenarios de analisis de codigo, y ha crecido hasta convertirse en una herramienta independiente con desarrollo activo y un conjunto de caracteristicas en expansion.
La herramienta opera en dos fases. En la fase de analisis, descarga un repositorio, analiza cada archivo fuente con parseadores AST especificos del lenguaje, y construye un grafo en FalkorDB donde:
- Nodos representan entidades de codigo (clases, funciones, modulos, interfaces, variables)
- Aristas representan relaciones (CALLS, INHERITS_FROM, CONTAINS, HAS_ARGUMENT, DEPENDS_ON, IMPLEMENTS)
En la fase de consulta, los usuarios pueden hacer preguntas en ingles simple. Un LLM (configurable entre modelos como GPT-4o y Llama 3-70B) traduce la pregunta a una consulta OpenCypher, la ejecuta contra el grafo de FalkorDB, y resume los resultados en una respuesta en lenguaje natural.
Que lenguajes de programacion estan soportados?
Code-Graph actualmente soporta tres lenguajes de programacion, con mas en el roadmap:
| Lenguaje | Estado | Parser AST Utilizado |
|---|---|---|
| Python | Soportado | Modulo AST incorporado de Python |
| Java | Soportado | JavaParser |
| C# | Soportado | Roslyn (Microsoft.CodeAnalysis) |
| C/C++ | Planificado | Por determinar |
| JavaScript/TypeScript | Planificado | Por determinar |
| Go | Planificado | Por determinar |
Cada parser de lenguaje extrae entidades y relaciones especificas del lenguaje. Por ejemplo, el analisis de Java captura interfaces, clases abstractas, anotaciones y parametros de tipo generico, mientras que el analisis de Python captura patrones de tipado pato, decoradores y funciones a nivel de modulo.
Como funciona Code-Graph en detalle?
El pipeline de analisis consta de varias etapas:
| Etapa | Entrada | Salida | Descripcion |
|---|---|---|---|
| Clonacion de Repositorio | URL de GitHub | Clon git local | Descarga el repositorio objetivo |
| Analisis AST | Archivos fuente | Nodos AST | Los parseadores descomponen el codigo en elementos estructurales |
| Extraccion de Entidades | Nodos AST | Nodos del grafo | Clases, funciones, modulos, argumentos se convierten en nodos FalkorDB |
| Mapeo de Relaciones | Estructura AST | Aristas del grafo | CALLS, INHERITS_FROM, CONTAINS, DEPENDS_ON se convierten en aristas |
| Almacenamiento en Grafo | Nodos + Aristas | Grafo de propiedades FalkorDB | Todos los datos se persisten en FalkorDB con propiedades |
| Traduccion de Consulta | Lenguaje natural | Consulta OpenCypher | El LLM convierte preguntas en ingles a consultas de grafo |
| Renderizado de Resultados | Resultados de consulta | Respuesta en lenguaje natural | El LLM resume los datos del grafo devueltos |
La extraccion de entidades es particularmente exhaustiva. Para cada clase, Code-Graph registra sus metodos, campos, clases base, interfaces implementadas, decoradores (Python) o anotaciones (Java), y ubicacion del archivo. Para cada funcion, registra parametros, tipo de retorno, funciones llamadas y modificadores de acceso.
Como funciona la integracion con LLM?
La integracion con LLM es la clave de la usabilidad de Code-Graph. En lugar de requerir que los desarrolladores aprendan sintaxis Cypher, la herramienta acepta consultas en lenguaje natural y usa un LLM para traducirlas:
Flujo de trabajo de ejemplo:
- El desarrollador pregunta: “Que clases en la capa de acceso a datos usan el pool de conexiones?”
- El LLM genera:
MATCH (c:Class)-[:CONTAINS]->(m:Method)-[:CALLS]->(f:Function) WHERE f.name CONTAINS 'getConnection' RETURN c.name, m.name - FalkorDB ejecuta la consulta, devolviendo clases y metodos coincidentes
- El LLM resume los resultados en ingles simple
Este enfoque hace que la exploracion del codigo base sea accesible para desarrolladores junior, ingenieros en incorporacion y cualquier persona que necesite entender un codigo base sin memorizar su estructura de archivos. Tambien soporta casos de uso mas avanzados como analisis de impacto (“Si cambio la clase DatabaseConnection, que otras 15 clases se veran afectadas?”) y deteccion de codigo muerto (“Lista todos los metodos publicos que nunca son llamados desde ningun lugar del codigo base”).
Comenzando con Code-Graph
git clone https://github.com/FalkorDB/code-graph.git
cd code-graph
npm install
docker run -p 6379:6379 -it --rm falkordb/falkordb
export OPENAI_API_KEY=YOUR_OPENAI_API_KEY
npm run dev
Abra http://localhost:3000/ en su navegador, ingrese cualquier URL de repositorio publico de GitHub, y Code-Graph lo analizara y presentara una interfaz de consulta interactiva. Una demostracion en vivo esta disponible en code-graph.falkordb.com.
FAQ
Que es Code-Graph? Code-Graph es una herramienta open-source de FalkorDB que analiza repositorios de codigo fuente y crea grafos de conocimiento consultables. Utiliza analisis AST estatico para extraer entidades de codigo y sus relaciones, las almacena en FalkorDB, y permite consultas en lenguaje natural via LLMs.
Que lenguajes de programacion estan soportados? Code-Graph actualmente soporta Python, Java y C#. El soporte para C, JavaScript y Go esta planificado para futuros lanzamientos.
Como funciona Code-Graph? Analiza archivos fuente usando parseadores AST (Arbol de Sintaxis Abstracta) para extraer entidades como clases, funciones, modulos y variables. Estas se convierten en nodos en un grafo de FalkorDB, con aristas que representan relaciones como CALLS, INHERITS_FROM, CONTAINS y DEPENDS_ON.
Como funciona la integracion con LLM? Code-Graph utiliza un pipeline GraphRAG que traduce preguntas en lenguaje natural (ej. ‘Que clases implementan el patron Strategy?’) en consultas Cypher contra el grafo de codigo. Los resultados de la consulta son luego resumidos por el LLM en respuestas legibles.
Como empiezo con Code-Graph? Clone el repositorio en github.com/FalkorDB/code-graph, ejecute npm install, inicie FalkorDB con docker, configure su OPENAI_API_KEY, y ejecute npm run dev. Abra http://localhost:3000/ e ingrese una URL de GitHub para analizar cualquier repositorio publico.
無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分!