Во время Intel Labs Day 2020 Intel представила ControlFlag, систему которая использует машинное обучение для обнаружения ошибок в коде.

Обученный более чем миллиардом неотмеченных строк кода производственного качества, содержащих различные ошибки, ControlFlag полагается на метод, известный как «обнаружение аномалий», для обнаружения традиционных шаблонов кода и выявления любых потенциальных аномалий, которые могут вызвать ошибки, независимо от языка программирования. Система расширяет проект Rapid Analysis of Developers из Санта-Клары, цель которого - помочь разработчикам программного обеспечения и исследователям быстрее писать код.

набор инструментов

Эта технология использует обучение без учителя для обучения обнаружению шаблонов и стилистическому выбору кода. Intel подчеркивает, что ControlFlag понимает код таким образом, что он не обозначает разницу в стилистическом выборе как синтаксическую ошибку только потому, что он «написан по-другому». По аналогии можно сравнить его с традиционной программой проверки грамматики, которая проверяет правильность данного предложения или набора слов на английском языке. В ходе тестирования ControlFlag смог выявить ошибки в коде производственного характера. В одном случае он даже обнаружил аномалию в коде cURL, которая ранее не распознавалась, когда разработчики смотрели на код. Intel даже начала использовать эту систему внутри компании для разработки программного обеспечения и прошивок.

машинный язык программирования

Джастин Готчлих, главный научный сотрудник, директор и основатель отдела исследований машинного программирования в Intel Labs, считает, что система может «значительно сократить время и деньги, необходимые для оценки и отладки кода». Он добавил, что это будет полезно, поскольку «согласно исследованиям, программисты тратят около 50% своего времени на отладку. С ControlFlag и подобными системами я представляю себе мир, в котором разработчики тратят гораздо меньше времени на отладку и больше времени на то, что по моему мнению, программисты делают лучше всего - на выражение новых творческих идей для машин».