Uber рассказала о внутренней системе AutoClean, которая удаляет из рабочих репозиториев устаревшие переключатели функций и связанный с ними код. За несколько лет она обработала более 16 000 переключателей и свыше 1 млн строк кода.
Переключатели функций позволяют разработчикам постепенно запускать новые возможности, проводить эксперименты и быстро возвращаться к прежней версии при сбое. После полного запуска функции старые ветки программы и тесты часто остаются в проекте, усложняя его поддержку.
Такой код нельзя безопасно удалить простым поиском: значение переключателя может передаваться через настройки, параметры функций и десятки связанных файлов. AutoClean находит кандидатов на удаление, переписывает код, запускает автоматические проверки и исправляет обнаруженные ошибки. Готовые правки система направляет команде, которая отвечает за соответствующий сервис, и обновляет их до ревью инженером.
Формальные операции, включая упрощение логических условий, выполняет инструмент Uber PolyglotPiranha по заданным правилам. ИИ-агент анализирует контекст: отслеживает передачу значений между функциями, находит ставшие недоступными участки и определяет, какие тесты нужно удалить или переписать.
После прохождения непрерывной интеграции AutoClean дополнительно проверяет изменения статическими инструментами и системой CodeCourt. Несколько специализированных ИИ-рецензентов оценивают, сохранилось ли поведение программы, не вышли ли правки за пределы задачи и не добавил ли агент новый код. Если хотя бы одна проверка завершается неудачно, изменения не передают человеку. Финальное решение о включении правок в кодовую базу принимает инженер.
