Компания Intel в рамках Intel Labs Day представила ControlFlag – аналитическую систему машинного программирования, способную самостоятельно обнаруживать ошибки в программном коде. Решение использует машинное программирование, сплав машинного обучения, формальных методов, языков программирования, компиляторов и компьютерных систем. В ходе предварительных испытаний система ControlFlag проанализировала более 1 млрд немаркированных строк промышленного кода, обнаружив в них новые дефекты.

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

Одно из ключевых преимуществ метода самообучения ControlFlag для распознавания паттернов – способность программы адаптироваться к стилю разработчика. ControlFlag способна определять даже стилистические вариации в языке программирования – аналогично тому, как читатели распознают различия между полными словами и их сокращениями.

В процессе работы ControlFlag учится определять и маркировать стилистические варианты кода. Решение также может настраивать идентификацию ошибок и выдавать рекомендации по их устранению, опираясь на собственные знания. Эти опции помогают ControlFlag не считать ошибками стилистические вариации кода, используемые разными командами разработчиков.

Решение уже продемонстрировало способность выявлять скрытые ошибки в широко используемом промышленном коде, который заранее проверили разработчики. Например, ControlFlag проанализировал cURL и выявил неизвестную ранее аномалию, что побудило разработчиков cURL выпустить исправленную версию инструмента.

Компания Intel начала использовать ControlFlag для выявления ошибок в процессе создания собственного ПО и прошивок. Это один из ключевых элементов проекта Intel Rapid Analysis for Developers, задача которого – повысить производительность путем предоставления экспертной поддержки.