Intel выпустила исходный код ControlFlag - системы машинного обучения для обнаружения ошибок в коде

Intel представила через рекламу разработки, связанные с исследовательским проектом ControlFlag, который предназначен для создания системы машинного обучения для повышения качества кода.

Инструмент выпущен под лицензией MIT. и он выделяется тем, что позволяет на основе модели, обученной на большом количестве существующего кода, выявлять различные ошибки и аномалии в исходных текстах, написанных на языках высокого уровня, таких как C / C ++.

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

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

Чтобы сделать ControlFlag более доступным для более широкого сообщества разработчиков программного обеспечения, Intel рада объявить, что ControlFlag теперь имеет открытый исходный код и доступен по адресу https://github.com/IntelLabs/control-flag. Мы рады предоставить разработчикам возможность развиваться и посмотреть, что еще можно сделать с помощью этой чрезвычайно ценной и инновационной технологии.

С момента своего появления ControlFlag был протестирован в программном обеспечении производственного уровня и широко используемых программных системах с открытым исходным кодом. Например, в прошлом году ControlFlag обнаружил аномалию кода в Client URL (cURL), проекте компьютерного программного обеспечения, который передает данные с использованием различных сетевых протоколов более XNUMX миллиарда раз в день. Сообщив об аномалии команде cURL, они согласились с выводами ControlFlag и впоследствии исправили свой код.

Аналогичный процесс определения шаблонов выполняется для тестируемого кода., которое сравнивается со справочным деревом решений. Большие расхождения с соседними ветвями указывают на аномалию в проверяемом паттерне. Также система позволяет не только выявить ошибку в шаблоне, но и предложить решение. Например, при разборе фрагмента кода «if (x = 7) y = x;» система определила, что конструкция «переменная == число» обычно используется в операторе «если» для сравнения числовых значений, поэтому указание «переменная = число» в операторе «если», вероятно, вызвано типографской ошибкой.

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

В качестве эксперимента при использовании ControlFlag в исходном коде утилиты cURL, довольно часто приводится в качестве примера проверенного, качественного кода, статических анализаторов обнаружил непреднамеренную ошибку при использовании элемента структуры "s-> keepon", который имел числовой тип, но сравнивался с логическим значением ИСТИНА.

В коде OpenSSL, помимо вышеупомянутой проблемы с «(s1 == NULL) ∧ (s2 == NULL)», аномалии также были обнаружены в выражениях «(-2 == rv)», что было по крайней мере опечаткой. .

Сообщается также, что использование ControlFlag позволило выявить несколько сотен ошибок в неспецифическом проприетарном программном обеспечении, что привело к сбоям и проблемам с памятью.

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


Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Будьте первым, чтобы комментировать

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован.

*

*

  1. Ответственный за данные: AB Internet Networks 2008 SL
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

bool (истина)