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