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. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.