Intel huet de ControlFlag Maschinn Léiersystem Code opgemaach fir Bugs am Code z'identifizéieren

Intel huet Entwécklungen am Zesummenhang mam ControlFlag Fuerschungsprojet entdeckt, fir e Maschinnléieresystem ze kreéieren fir d'Codequalitéit ze verbesseren. Den Toolkit, dee vum Projet virbereet ass, erlaabt, baséiert op engem Modell, deen op enger grousser Quantitéit vum existente Code trainéiert ass, verschidde Feeler an Anomalien an Quelltexter z'entdecken, déi an héije Sprooche geschriwwe sinn wéi C/C++. De System ass gëeegent fir verschidden Aarte vu Probleemer am Code z'identifizéieren, vu Schreiffehler a falschen Typkombinatiounen z'entdecken, bis verpasst NULL Kontrollen an Zeecher a Gedächtnisproblemer z'entdecken. De ControlFlag Code ass an C++ geschriwwen an ass Open Source ënner der MIT Lizenz.

De System léiert selbstverständlech andeems e statistesche Modell vun der existéierender Code-Array vun oppene Projeten op GitHub an ähnlechen ëffentleche Repositories publizéiert gëtt. Op der Léierstadium bestëmmt de System typesch Mustere fir Strukturen am Code ze bauen a baut e syntakteschen Bam vu Linken tëscht dëse Mustere, wat de Code Ausféierungsfloss am Programm reflektéiert. Als Resultat gëtt e Referenzentscheedungsbam geformt, deen d'Erfahrung kombinéiert fir all analyséiert Quelltexter z'entwéckelen.

De Code deen getest gëtt geet duerch en ähnleche Prozess fir Musteren z'identifizéieren déi géint e Referenzentscheedungsbam gepréift ginn. Grouss Diskrepanzen mat Nopeschzweige weisen op d'Präsenz vun enger Anomalie an der Schabloun déi gepréift gëtt. De System erlaabt och net nëmmen e Feeler an der Schabloun z'identifizéieren, awer och eng Korrektur ze proposéieren. Zum Beispill, am OpenSSL Code gouf d'Konstruktioun "(s1 == NULL) ∧ (s2 == NULL)" fonnt, wat nëmmen 8 Mol am Syntaxbam geschitt ass, während déi nootste Branche mam Wäert "(s1 == NULL) || (s2 == NULL)" ass ongeféier 7 Tausend Mol geschitt. De System huet och eng Anomalie "(s1 == NULL) | (s2 == NULL)" déi 32 Mol am Bam geschitt ass.

Intel huet de ControlFlag Maschinn Léiersystem Code opgemaach fir Bugs am Code z'identifizéieren

Wann Dir de Code Snippet parséiert "wann (x = 7) y = x;" de System huet festgestallt datt d'Konstruktioun "Variabel == Zuel" normalerweis an der "wann" Ausso benotzt gëtt fir numeresch Wäerter ze vergläichen, dofir, mat enger grousser Wahrscheinlechkeet, ass d'Indikatioun "Variabel = Zuel" am "wann" Ausdrock verursaacht duerch en Tippfeeler. Traditionell statesch Analysatoren géifen esou e Feeler opfänken, awer am Géigesaz zu hinnen benotzt ControlFlag keng fäerdeg Reegelen, an deenen et schwéier ass all méiglech Optiounen virauszesoen, awer baséiert op Statistike fir all Zorte vu Konstruktiounen an enger grousser Zuel vu Projeten ze benotzen. .

Als Experiment, andeems Dir ControlFlag am Quellcode vum cURL Utility benotzt, deen dacks als e Beispill vu qualitativ héichwäerteg a verifizéiert Code zitéiert gëtt, gouf e Feeler, dee vu statesche Analysatoren onopfälleg ass, festgestallt wann Dir de "s->keepon" Strukturelement benotzt, déi en numereschen Typ hat, awer mam boolesche Wäert TRUE verglach gouf. Am OpenSSL Code, nieft dem uewe genannte Problem mat "(s1 == NULL) ∧ (s2 == NULL)", goufen et och Anomalien an den Ausdréck "(-2 == rv)" (de Minus war en Tippfeeler ) an "BIO_puts(bp, ":")

Source: opennet.ru

Setzt e Commentaire