Розробка

Замаскований під програміста бот виправляє помилки в коді

Автоматизований програміст 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 служить прототипом майбутнього розробки ПЗ, в якому боти і люди без проблем співпрацюють і стають партнерами в справі пошуку недоліків», — кажуть вони.

Франклін, сам відомий винахідник, напевно, був би вражений тим, що відбувається.

Related Articles

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Close