Intel опубликовал ControlFlag 1.2, инструмент для выявления аномалий в исходных текстах

Компания Intel опубликовала выпуск инструментария ControlFlag 1.2, позволяющего выявлять ошибки и аномалии в исходных текстах, используя систему машинного обучения, натренированную на большом объёме существующего кода. В отличие от традиционных статических анализаторов, ControlFlag не применяет готовых правил, в которых трудно предусмотреть все возможные варианты, а отталкивается от статистики использования всевозможных языковых конструкций в большом числе существующих проектов. Код ControlFlag написан на языке С++ и открыт под лицензией MIT.

Новый выпуск примечателен реализацией полной поддержки выявления аномалий и обучения на основе типовых шаблонов кода для языка С++. В прошлых версиях подобная поддержка была обеспечена для языков C и PHP. Система подходит для определения в коде различных видов проблем, от определения опечаток и неверного сочетания типов, до выявления аномалий в условных выражениях “if” и пропущенных проверок значения NULL в указателях. Система обучается путём построения статистической модели имеющегося массива кода открытых проектов на языках C, C++ и PHP, опубликованных в GitHub и подобных публичных репозиториях.

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


Release. Ссылка here.