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;" система визначила, що конструкція "змінна == число" зазвичай використовується в операторі "if" для порівняння числових значень, тому вказівка ​​"змінна = число" у операторі "if", ймовірно, спричинена друкарською помилкою .

Традиційні статичні аналізатори виявили б таку помилку, але, на відміну від них, ControlFlag не застосовує звичайні правила, в яких важко передбачити всі можливі варіанти, а виходить зі статистики використання всіх видів. конструкцій у великій кількості проектів.

Як експеримент, при використанні ControlFlag у вихідному коді утиліти cURL, що часто наводиться як приклад перевіреного, якісного коду, статичних аналізаторів виявлено випадкову помилку під час використання елемента структури "s-> keepon", який мав числовий тип, але порівнювався з булевим значенням TRUE.

У коді OpenSSL, на додаток до згаданої вище проблеми з "(s1 == NULL) ∧ (s2 == NULL)", аномалії також були виявлені у виразах "(-2 == rv)", які були щонайменше друкарська помилка.

Також повідомляється, що використання ControlFlag дозволило виявити кілька сотень помилок у неспецифічному пропрієтарному програмному забезпеченні, що призводило до збоїв і проблем з пам’яттю.

В кінці кінців якщо вам цікаво дізнатись більше про це, Ви можете перевірити деталі У наступному посиланні. Що стосується тих, хто зацікавлений у можливості побачити вихідний код, отримати його або клонувати його в репозиторії, вони можуть зробити це з за наступним посиланням.


Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: AB Internet Networks 2008 SL
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.