Моментальная навигация по коду для любого коммита. А так можно было? ☠️

Хардкор

Доклад принят в программу конференции

Мнение Программного комитета о докладе

Гигабайты данных, авторские алгоритмы и прочий хардкор — и всё это, чтобы было удобно смотреть код коммитов без долгой переиндексации. Должно быть сложно, но интересно.

Целевая аудитория

Все разработчики (бэкенд, фронтенд, мобильные), DevOps-инженеры, тестировщики, технические менеджеры.

Тезисы

Часто ли вы сталкивались с необходимостью при чтении чужого пулл-реквеста переходить в полноценную IDE, потому что в веб-платформе не хватает нормальной навигации по коду? А задумывались, откуда эта проблема и как её решить? Расскажем о том, как подошли к решению этой задачи в новой платформе для разработчиков SourceCraft от Яндекса.

Мы сделали систему инкрементальных индексов на каждый коммит для поиска декларации/использований кода в репозитории. Открываешь коммит — и поиск работает моментально, ничего на стороне клиента/сервера не надо перестраивать.

Работая с любой платформой для разработчиков, мы постоянно пополняем кодовую базу своего проекта. Каждый коммит порождает новую версию модели кода и ее индексов. Все подобные инструменты сталкиваются с этой проблемой, и чаще всего никто не берётся за её решение. Мы в Яндексе при разработке собственной платформы для разработчиков SourceCraft решили эту задачу. Для этого разработали свою систему индексов, основанную на иммутабельных инкрементальных структурах данных. В докладе поделимся архитектурными приёмами, какие структуры данных нужны для различных сценариев и как мы их храним.

Далее рассмотрим конкретные примеры индексов, необходимых для решения задач навигации по коду. Обсудим отличия от IDE и к каким техническим решениям это приводит. Детально разберем алгоритмы под капотом нашей системы.

Ольга Лукьянова

Yandex Infrastructure

Руководитель команды поиска и навигации по коду в платформе для разработчиков SourceCraft от Яндекса.
* 18 лет в компании JetBrains в проекте R#.
* 1,5 года в Huawei руководила разработкой IDE.

Yandex Infrastructure

Команда Yandex Infrastructure создает системы, сервисы и инструменты для разработчиков Яндекса. Их решения направлены на то, чтобы любой проект Яндекса получал готовую инфраструктуру на всех этапах производства: у них есть собственная система контроля версий для хранения исходного кода, системы распределённой сборки и непрерывной интеграции для C++, Java, Python и Go, способные обрабатывать сотни сборок в минуту, система ревью кода, распределённая система выполнения задач, системы развертывания и мониторинга приложений. Они также разрабатывают продукты для поддержки процессов разработки, планирования ресурсов и много других систем и инструментов.

Видео