За пределами совместимости API... Заметка

За пределами совместимости API: Создание инструмента для измерения радиуса поражения при изменениях в библиотеке

Quasar был разработан Netflix для обеспечения наглядности влияния изменений в библиотеках Java на обширную экосистему репозиториев компании. Производители библиотек часто видят изменения в API, но не имеют представления о том, какие потребители зависят от измененных символов. Эта наглядность имеет решающее значение, особенно по мере того, как агенты кодирования все активнее участвуют в жизненном цикле разработки.Quasar решает эту проблему, индексируя определения и ссылки на символы в репозиториях Netflix. Он отвечает на два ключевых вопроса для производителей: что изменилось в публичном API библиотеки и какие репозитории используют эти конкретные измененные символы. Это превращает общие предупреждения о совместимости в действенные доказательства.Существующие инструменты не справляются: средства проверки совместимости определяют изменения контрактов, но не использование; графы зависимостей показывают заявленную досягаемость, но не фактические вызовы; а текстовый поиск может упустить нюансы. Quasar использует SCIP, открытый формат обмена, позволяющий индексаторам, специфичным для языка, кодировать определения и ссылки. Quasar сохраняет определения API для версий библиотек и коммитов, связывая изменения с точным использованием независимо от независимого индексирования.При запуске сборки CI индексаторы отправляют SCIP-индексы в Quasar, сохраняя определения API и ссылки потребителей. Во время проверки запроса на слияние (pull request) Quasar сравнивает проиндексированные базовые и головные определения, подсчитывая прямые ссылки потребителей с помощью Amazon Athena. Эти данные предоставляются через API REST, GraphQL и MCP.Для простого изменения API, такого как удаление метода, Quasar определяет репозитории, которые все еще вызывают старый метод, версии их зависимостей и местоположение файлов. Это позволяет производителям координировать миграции перед выпуском нарушающих изменений.Quasar предоставляет подробные отчеты о влиянии во время анализа запросов на слияние, классифицируя символы как добавленные, удаленные или измененные, а затем анализируя влияние потребителей на удаления и изменения. Он показывает затронутые репозитории, распределение версий, примеры местоположений потребителей и критичность библиотеки. Это позволяет производителям принимать обоснованные решения, такие как устаревание, публикация путей миграции или координация более широких миграций.Полиглотная основа системы, основанная на SCIP, позволяет ей индексировать экосистемы нескольких языков. Она может отслеживать сложные взаимосвязи, такие как определения Protobuf через сгенерированные члены Java, до связанных репозиториев потребителей. В то время как Quasar оценивает изменения API JVM и Protobuf, полная оценка нарушающих изменений API для других языков, таких как Go или Python, продолжается.В настоящее время Quasar отображает результаты в запросах на слияние, поддерживая решения до слияния. Цель состоит в том, чтобы интегрировать этот контекст раньше в рабочий процесс кодирования, позволяя агентам распознавать изменения публичного API и запрашивать Quasar перед открытием запроса на слияние. Этот проактивный подход помогает агентам принимать обоснованные решения, хотя анализ запросов на слияние остается жизненно важным для проверки.
CdXz5zHNQW_uBo5VUclOg.png