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 е направило възможно идентифицирането на няколкостотин грешки в неспецифичен собствен софтуер, което води до сривове и проблеми с паметта.
Накрая ако се интересувате да научите повече за това, можете да проверите подробностите В следващия линк. Що се отнася до тези, които се интересуват да могат да видят изходния код, да го получат или да го клонират в хранилище, те могат да го направят от следната връзка.