Intel odhalil prostredníctvom inzerátu vývoj súvisiaci s výskumným projektom ControlFlag, ktorý je určený na vytvorenie systému strojového učenia na zlepšenie kvality kódu.
Nástroj bol vydaný pod licenciou MIT a vyniká tým, že umožňuje na základe modelu trénovaného na veľkom množstve existujúceho kódu identifikovať rôzne chyby a anomálie v zdrojových textoch napísaných v jazykoch na vysokej úrovni, ako je C / C ++.
Systém je vhodný na zisťovanie rôznych typov problémov vo vašom kóde, od detekcie typografických chýb a nesprávnych kombinácií typov až po identifikáciu chýbajúcich kontrol nulových hodnôt v ukazovateľoch a problémy s pamäťou.
Systém sa sám učí vytváraním štatistického modelu z existujúceho poľa otvoreného zdrojového kódu publikovaného na GitHub a podobných verejných úložiskách. Vo fáze tréningu systém určuje typické šablóny vybudovať štruktúry v kóde a vytvoriť syntaktický strom spojení medzi týmito šablónami, odrážajúci tok vykonávania kódu v programe. Výsledkom je vytvorenie referenčného rozhodovacieho stromu, ktorý kombinuje vývojové skúsenosti všetkých analyzovaných zdrojových textov.
Aby bol ControlFlag dostupnejší pre širšiu komunitu vývojárov softvéru, Intel s potešením oznamuje, že ControlFlag je teraz open source a je dostupný na https://github.com/IntelLabs/control-flag. Sme radi, že vývojárom dávame príležitosť vyvíjať sa na ňom a vidieť, čo ešte možno urobiť s touto mimoriadne hodnotnou a inovatívnou technológiou.
Od svojho uvedenia bol ControlFlag testovaný na produkčnom softvéri a široko používaných softvérových systémoch s otvoreným zdrojovým kódom. Napríklad minulý rok spoločnosť ControlFlag identifikovala anomáliu kódu v Client URL (cURL), počítačovom softvérovom projekte, ktorý prenáša údaje pomocou rôznych sieťových protokolov viac ako XNUMX miliardu krát za deň. Po nahlásení anomálie tímu cURL súhlasili so zisteniami ControlFlag a následne opravili svoj kód.
Podobný proces definovania vzorov sa vykonáva pre testovaný kód, ktorý sa porovnáva s referenčným rozhodovacím stromom. Veľké rozdiely so susednými vetvami naznačujú anomáliu vo vzore, ktorý sa overuje. Systém tiež umožňuje nielen identifikovať chybu v šablóne, ale aj navrhnúť riešenie. Napríklad pri analýze útržku kódu „if (x = 7) y = x;“ systém zistil, že konštrukcia „premenná == číslo“ sa vo výraze „ak“ vo všeobecnosti používa na porovnanie číselných hodnôt, takže údaj „premenná = číslo“ vo výraze „ak“ je pravdepodobne spôsobený tlačovou chybou .
Tradičné statické analyzátory by takúto chybu odhalili, ale na rozdiel od nich ControlFlag neuplatňuje štandardné pravidlá, v ktorých je ťažké predvídať všetky možné možnosti, ale vychádza zo štatistík používania všetkých druhov vo veľkom počte projektov.
Ako experiment, pri použití ControlFlag v zdrojovom kóde pomôcky cURL, to často sa uvádza ako príklad osvedčených, vysokokvalitných kódových, statických analyzátorov odhalila neúmyselnú chybu pri použití prvku štruktúry "s-> keepon", ktorý mal číselný typ, ale bol porovnaný s boolovskou hodnotou TRUE.
V kóde OpenSSL sa okrem spomínaného problému s "(s1 == NULL) ∧ (s2 == NULL)" zistili anomálie aj vo výrazoch "(-2 == rv)", čo bol prinajmenšom preklep .
Uvádza sa tiež, že použitie ControlFlag umožnilo identifikovať niekoľko stoviek chýb v nešpecifickom proprietárnom softvéri, čo viedlo k zlyhaniam a problémom s pamäťou.
Konečne ak máte záujem dozvedieť sa o tom viac, môžete skontrolovať podrobnosti Na nasledujúcom odkaze. Pokiaľ ide o tých, ktorí majú záujem vidieť zdrojový kód, získať ho alebo ho naklonovať v úložisku, môžu tak urobiť od nasledujúci odkaz.