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

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

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

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

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

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

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

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

 

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

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

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

 

Читайте новости первыми в нашем Telegram-канале!

Подписывайтесь на наш канал в Дзен!

Версия для печатиВерсия для печати

Регион: 

Рубрики: 

Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!

Читайте также

 

Комментарии

Аватар пользователя mike

Имхо, рано или поздно компы научатся писать код для любой платформы по любому заданию, написанному на каком-нибудь языке моделирования, и даже будут предлагать пользовательский дизайн. Но не радуйтесь, гуманитарии. К этому времени почти все шаблоны ПО уже будут разработаны. Но у технарей работа останется: железо само по себе работать не может. :)) 

Аватар пользователя savely

Первые 3 абзаца - красота, перспективы.

Далее - ну, вообще-то, оно нормально не работает. ;))