Европейские исследователи создали бота, который способен самостоятельно выпускать патчи к программному обеспечению. Несколько «заплаток» от нейросети уже одобрили разработчики на GitHub.
Работа под прикрытием
Ученые из Лилльского университета, Национального исследовательского института INRIA (Франция) и Королевского технологического института KTH (Швеция) представили бота, который научился исправлять бреши в коде программ. Он получил имя Repairnator и уже успел выпустить несколько обновлений, которые разработчики приняли без правок.
Робот работает на платформе GitHub. Он постоянно отслеживает, какие новые версии продуктов появляются на этом ресурсе. Когда добавляется новый проект, Repairnator проверяет его код на наличие ошибок и предлагает вариант их исправления еще до того, как исходники программы успеют изучить люди. До недавнего времени бот работал на GitHub под аккаунтом инженера Люка Эсапе (Luc Esape). После публичной презентации робота раскрылась настоящая личность этого «программиста».
Исходники проекта европейских ученых доступны на GitHub.
Успехи робота
Авторы Repairnator’а сообщили, что всего бот на текущий момент выпустил пять «заплаток», которые были приняты другими разработчиками. До этого робот сделал 3551 попытку исправить код, однако все они уступали предлагаемым решениям от программистов-людей. Сколько бот выпустил ошибочных патчей, которые не устраняли проблемы или создавали новые, исследователи не сообщили.
Видно, что соотношение принятых «заплаток» к отклоненным пока оставляет желать лучшего. С другой стороны, нейросеть смогла создать правки, которые не уступали предложениям живых людей: это позволяет предположить, что в дальнейшем робот повысит эффективность своей работы. Впрочем, если изучить, какие именно бреши заметил бот, то выяснится, что четыре из пяти патчей касаются исключения NullPointerException. Зачастую эта ошибка легко находится, не требует серьезных правок и может быть замечена еще на этапе компиляции кода.
Робот заменит программиста?
Исследователи, создавшие нейросеть, и не предполагают, что их разработка должна стать полноценной заменой человека и писать объемные патчи. Основная задача бота – отслеживание и автоматизация исправления простых ошибок в режиме непрерывной интеграции.
Repairnator должен стать фильтром на этапе, когда готовая сборка проекта передается команде тестирования. Он сможет без привлечения профильных специалистов обнаружить самые примитивные и очевидные дефекты, которые неизбежно возникают при разработке масштабного продукта. Это должно снизить нагрузку на QA-отдел и освободить сотрудников для более сложных задач. Заменить тестировщиков в более творческой работе (например, составлении тест-кейсов) робот не сможет.