Рефакторинг с помощью ИИ: методы и доказательства

Отделяйте предложение преобразования от доверенного исполнения и проверки. Если возможно, поручайте модели распознать рефакторинг, а применять его — движку рефакторинга; затем требуйте компиляцию, тесты, статические проверки и подтверждение того, что нужное преобразование действительно выполнено. Рефакторинг должен сохранять наблюдаемое поведение и улучшать внутреннюю структуру. Языковая модель может предложить убедительное переписывание, не установив ни одно из этих условий, поэтому поверхностной правдоподобности недостаточно. Современные работы разделяют роли по-разному: модель распознаёт известное преобразование, которое выполняет доверенный движок, либо генерирует патч, после чего проверяются компиляция, тесты, статический анализ и факт рефакторинга. Поверхность проверки не менее важна, чем модель. Границы применимости: Прохождение имеющихся тестов не доказывает семантическую эквивалентность непроверенного поведения. Меньший diff не обязательно означает корректный рефакторинг. Связанный эксперимент сайта охватывает короткие Python-функции, а не рефакторинг на уровне репозитория.