Разработчики «Яндекса» выпустили новое решение на базе LLM, предназначенное для автоматизации миграции iOS-проектов с устаревшего языка Objective-C на более современный Swift. Этот подход значительно ускоряет процесс миграции, позволяя сократить время выполнения задач в 2,5 раза, что особенно актуально для крупных проектов с сотнями тысяч строк кода.
Создавая данное решение, команда столкнулась с обычными проблемами, связанными с переписыванием кода, такими как длительность процесса, ошибки при ручной работе и необходимость поддерживать разработку проекта в параллели. Внедрение нового инструмента позволило разработчикам сосредоточиться на валидации корректности миграции и выполнении сложного рефакторинга, вместо того чтобы тратить время на монотонную рутинную работу.
За два месяца работы команда интегрировала 106 pull requests, переписав 97,5 тысячи строк кода и более 2 тысяч файлов, что в обычных условиях заняло бы более года. В отличие от традиционных конвертеров, использующееся решение работает с учетом контекста проекта, используя систему из четырех специализированных промптов, каждый из которых отвечает за отдельный этап миграции.
Первый промпт определяет оптимальный порядок миграции файлов и проверяет результаты через компиляцию и тестирование. Второй адаптирует полученный код к лучшим практикам Swift, третий проводит автоматическую проверку по чек-листу, а четвертый очищает код от устаревших аннотаций, когда они становятся ненужными.
Для тестирования универсальности данного подхода была осуществлена миграция одного из пакетов приложения Wikipedia для iOS. Результаты эксперимента показали, что решение не ограничено спецификой монорепозитория «Яндекса». Чтобы использовать данный инструмент в своем проекте, разработчику достаточно заполнить конфигурационный шаблон, учитывающий архитектуру проекта, систему сборки и стандарты кода.
Рекомендуется начинать миграцию с компонентов, не зависимых от устаревшего кода, что даст возможность избежать промежуточных слоев совместимости. Для обеспечения качества кода в процессе миграции можно использовать дополнительный промпт для генерации интеграционных тестов. Все промпты, скрипты и шаблоны уже доступны на GitHub и SourceCraft, что делает данное решение универсальным инструментом для всех iOS-проектов, сталкивающихся с задачей миграции устаревшего кода.
