Intel опубликовала инструмент поиска ошибок в коде ControlFlag версии 1.0
Первую полноценную версию инструмента «интеллектуального» поиска ошибок в исходных кодах программ на языках программирования C и C++ ControlFlag 1.0 опубликовала компания Intel 18 ноября в публичном хранилище проекта на ресурсе GitHub.
Проект ControlFlag отличается от статических анализаторов кода. Он не пытается анализировать код с использованием набора готовых правил, а использует модели глубокого обучения для анализа на основе собранной статистики из исходных кодов множества программ.
Для обучения берутся исходные коды открытых программных проектов, опубликованных на GitHub и других хранилищах текстов программ. На этапе обучения ControlFlag определяет типовые шаблоны построения конструкций в программном коде и строит синтаксическое дерево связей между этими шаблонами, отражающее поток выполнения кода.
В качестве результат обучения формируется дерево принятия решений, с которым позже и сравниваются выявленные шаблоны в текстах анализируемой программы. Значительная разница при сравнении (порог разницы задан формулой) свидетельствует об аномалиях в анализируемом коде.
Для демонстрации команда разработки продукта представила результаты анализа двух популярных программных продуктов с открытым исходным кодом — OpenSSL и cURL. Обе программы проходят регулярную проверку с помощью статически анализаторов.
ControlFlag выявила незначительные ошибки в исходных текстах обеих программ. Ошибки являются, по всей видимости, опечатками. Но они могут служить потенциальной причиной некорректного поведения программ.