Профессиональная конференция для Go-разработчиков

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

Хардкор

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

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

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

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

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

Тезисы

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

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

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

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

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

Yandex Infrastructure

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

Yandex Infrastructure

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

Видео