Pull to refresh

Замаскированный под программиста бот исправляет ошибки в коде

Open source *Programming *Artificial Intelligence
Translation
Original author: Emerging Technology

Автоматизированный программист Repairnator сделал патчи достаточно хорошие для того, чтобы ввести в заблуждение людей


«В этом мире ничего нельзя заявить определённо, кроме неизбежности смерти и налогов», — писал Бенджамин Франклин в 1789. Если бы он жил сегодня, он мог бы ещё добавить в этот список ошибки в программах.

Современные компьютерные программы настолько сложны, что ошибки неизбежно появляются в них в процессе разработки. Поэтому их поиски и написание патчей, их исправляющих – обычная часть любого графика разработки ПО. Существуют даже компании, предлагающие разработчикам такой сервис – например, Travis.

Но поиск ошибок и написание патчей – дело долгое, забирающее значительные ресурсы. Различные исследователи разрабатывали ботов для автоматизации этого процесса, но они обычно работают медленно или выдают код плохого качества, не проходящий инспекцию. Поэтому разработчикам бы очень хотелось положиться на быстрый и качественный бот, сканирующий код на предмет ошибок и пишущий к ним патчи.



Сегодня их мечты сбываются благодаря работе Мартина Монпераса и его друзей из Королевского технологического института в Стокгольме, Швеция. Они, наконец, сделали бота, способного соревноваться с людьми в деле поиска багов и написания качественных патчей.

Ребята назвали бота Repairnator и успешно испытали его, позволив соревноваться с программистами-людьми в поисках исправлений. «Это важная веха на пути к состязаниям с людьми в деле исследований автоматического исправления программ», — говорят они.

Специалисты по информатике давно знают о возможности автоматизации процесса написания патчей. Непонятно лишь, могут ли боты делать эту работу так же быстро и качественно, как люди.

Поэтому Монперас с компанией решили проверить своего бота, замаскировав его под человека-разработчика и позволив ему состязаться с людьми в деле разработки патчей для GitHub, сайта для программирования с контролем версий. «Ключевая идея Repairnator – автоматически создавать патчи, исправляющие ошибки в сборках, показывать их людям-разработчикам, и наблюдать, примут ли разработчики эти патчи как достойные включения в код», — сказали они.

Команда зарегистрировала на GitHub пользователя Luc Esape, якобы программиста из их лаборатории. «У Люка есть фото в профиле, он выглядит разработчиком-юниором, жаждущим вносить вклад в разработку открытого кода на GitHub», — говорят они.

На самом деле, Люк – это Repairnator под прикрытием. Обман был нужен, поскольку модераторы склонны к тому, чтобы оценивать работу ботов и людей по-разному. «Скрытность была необходима, чтобы проверить научную гипотезу о соревновательной способности людей», — говорят Монперас с компанией, уже сообщившие всем заинтересованным сторонам о происходящем.

Команда сделала два подхода к проверке Repairnator. Первое испытание шло с февраля по декабрь 2017, когда она запускала Repairnator на постоянном списке из 14 188 проектов с GitHub в поисках ошибок. «Мы обнаружили, что наш прототип способен делать порядка 30 попыток исправлений в день», — сказали они.

За это время Repairnator проанализировал более 11 500 проектов с ошибками. Он смог воспроизвести ошибки в более чем 3000 случаев. В 15 случаях он смог разработать патч.

Но ни один из этих патчей не приняли в сборку, поскольку Repairnator либо делал их слишком долго, либо писал патчи неприемлемого качества.

Второй подход был более успешным. Команда отправила Люка работать над сервисом непрерывной интеграции Travis с января по июнь 2018. Хотя команда не уточняет, что именно они изменили в Repairnator, 12 января он написал первый патч, принятый модератором в сборку. «Иначе говоря, Repairnator впервые смог выйти на уровень человека», — говорят они. За последовавшие шесть месяцев Repairnator выдал пять патчей, принятых модераторами.

Впечатляющее достижение, открывающее путь новому поколению методов разработки ПО. Оно также поднимает интересные вопросы. Разработчики обращают внимание на патч, который Repairnator разработал 12 мая для проекта eclipse/ditto.

После этого команда получила письмо от одного из разработчиков проекта: «Мы принимаем пул-реквесты от пользователей, подписавших лицензионное соглашение Eclipse Foundation Contributor».

Это порождает неприятную проблему, поскольку бот не может подписать лицензионное соглашение. «Кому принадлежит интеллектуальная собственность, и кто отвечает за вклад бота: оператор бота, автор бота, дизайнер алгоритма исправлений?» – задаёт вопрос команда разработчиков.

Такого рода проблемы стоит решить до того, как люди и боты смогут совместно работать дальше. Но Монперас и его команда оптимистично смотрят в будущее. «Мы считаем, что Repairnator служит прототипом будущего разработки ПО, в котором боты и люди без проблем сотрудничают и становятся партнёрами в деле поиска недостатков в ПО», — говорят они.

Франклин, сам известный изобретатель, наверняка был бы впечатлён происходящим.
Tags:
Hubs:
Total votes 31: ↑22 and ↓9 +13
Views 14K
Comments Comments 14