Как стать автором
Обновить

Microsoft показала ИИ-инструмент для автоматизации отладки и поиска багов в коде

Время на прочтение2 мин
Количество просмотров2.9K

Исследователи Microsoft разработали инструмент на базе ИИ, который, по мнению ученых, поможет программистам быстрее находить и исправлять ошибки в коде. ПО получило название BugLab и основано оно на принципах работы генеративно-состязательных сетей.

Всего в BugLab задействовано две конкурирующие GAN-сети, которые учатся, «играя» между собой в прятки. А сам процесс построен следующим образом. Первая сеть получает на вход эталонный программный код и решает стоит ли вводит в код ошибку и точно формулирует свою ошибку. К примеру, решает заменить знак сложения знаком вычитания. После этого код редактируется и в него специально заносятся ошибки. Затем другая сеть ищет ошибку, сделанную первой сетью, и пытается ее исправить.

Эти две GAN-сети обучаются самостоятельно в режиме самоконтроля. Первая сеть учится прятать ошибки в коде таким образом, чтобы их было тяжело найти, а вторая учится искать даже самые неочевидные баги. В итоге обе сети получают пользу — первая может с каждым разом генерировать все более сложные ошибки, а вторая их находить.Такой подход к обучению схож с принципами работы генеративно-состязательных сетей, за исключением того, что новые фрагменты кода не создаются с нуля, а перезаписывают данные уже существующих отрывков. Исследователи из Microsoft отметили, что процесс обучения схож с игрой в прятки, когда один участник ищет наиболее подходящее место, в котором его бы не нашли, а второй анализирует ситуацию и пытается найти такие места. 

В компании отметили, что нынешние модели машинного обучения пока не умеют находить сложные логические и архитектурные баги, поэтому исследователи сконцентрировались на обучении ИИ определять самые распространенные ошибки, к которым относятся:

  • ошибки использования символов сравнения;

  • неправильное применения логических операторов;

  • ошибки в именах переменных.

Также исследователи заявили, что во время обучения использовали фрагменты кода на языке программирования Python. А после процесса обучения протестировали ИИ на отрывках кода из Python Package Index (PyPI). Испытания показали, что подобный метод обучения на 30% эффективнее альтернатив.

Далее специалисты из Microsoft опробовали BugLab на проектах с открытым исходным кодом на GitHub. Среди всех найденных ошибок, 19 оказались ранее неизвестными. Но кроме этого, эксперименты показали, что инструмент еще далек от идеала и часто выдает ложные срабатывания.

В ближайшем будущем исследователи планируют обучить ИИ понимать структуру кода, для этого планируется представить фрагменты кода в виде вершин графа и ребрами указать их отношения между собой. Такой подход позволит применить стандартные модели машинного обучения и добиться более точного определения ошибок

Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
Всего голосов 9: ↑9 и ↓0+9
Комментарии2

Другие новости