Автоматизация

Graphlens: open-source фреймворк превращает полиглотные репозитории в типизированный граф

Новый инструмент решает проблемы моноязычности и неэффективного поиска по зависимостям, преобразуя код на Python, TypeScript, Go и Rust в единую структурированную модель.

Иллюстрация к новости: Graphlens: open-source фреймворк превращает полиглотные репозитории в типизированный граф

В разработке ПО анализ кода в сложных полиглотных системах сталкивается с двумя проблемами. Первая — трудоемкий ручной поиск по зависимостям по циклу «grep — открыть — прочитать — перейти по импорту — снова grep». Этот метод не различает, например, функцию `process_order` в модуле `services.py` и ее одноименную версию в тестах. При автоматизации LLM-агентом задача приводит к перебору файлов и высоким вычислительным затратам.

Вторая проблема — моноязычность большинства инструментов анализа. Они хорошо работают с Python, но не отслеживают связи между фронтендом на TypeScript и бэкендом на Python или Go.

Фреймворк graphlens (лицензия MIT) создан для решения этих задач. Он преобразует исходный код репозитория (поддерживает Python, TypeScript, Go, Rust) в единый типизированный граф промежуточного представления (граф-IR). Инструмент парсит проект, нормализует структуру, выявляет сущности (функции, классы, методы, импорты) и связи между ними, строя целостную модель. Это позволяет точно отслеживать, какой именно `process_order` вызывается из `api.py`, и видеть связи между компонентами на разных языках. Результат — структурированное машиночитаемое представление кодовой базы для анализа.

Практическое значение graphlens для разработчиков, продактов и компаний:

  • Ускоряет анализ зависимостей, поиск мертвого кода, оценку влияния изменений и навигацию по крупной кодовой базе.
  • Предоставляет LLM-агентам не сырые файлы, а точные структурированные данные о графе зависимостей. Это снижает затраты токенов на перебор и повышает релевантность ответов о коде, открывая путь к более эффективным инструментам автоматизации разработки и рефакторинга.

Graphlens решает проблему неструктурированности данных, с которой сталкиваются LLM при работе с кодом, предоставляя им типизированный контекст. Это может привести к появлению ИИ-агентов, которые не только генерируют код по описанию, но и понимают архитектуру существующих систем, предлагают осмысленные улучшения и проводят изменения на основе точной карты зависимостей.