Intel je izdal izvorno kodo ControlFlag sistema strojnega učenja za odkrivanje napak v kodi

Intel razkril prek oglasa razvoj v zvezi z raziskovalnim projektom ControlFlag, ki je namenjen ustvarjanju sistema strojnega učenja za izboljšanje kakovosti kode.

Orodje je bilo izdano pod licenco MIT in izstopa po tem, da na podlagi modela, izurjenega na veliki količini obstoječe kode, omogoča prepoznavanje različnih napak in anomalij v izvornih besedilih, napisanih v jezikih visoke ravni, kot je C / C ++.

Sistem primeren je za odkrivanje različnih vrst težav v vaši kodi, od odkrivanja tipografskih napak in napačnih kombinacij tipov, do prepoznavanja manjkajočih preverjanj za ničelne vrednosti v kazalcih in težav s pomnilnikom.

Sistem se uči sam z izgradnjo statističnega modela iz obstoječega niza odprtokodne kode, objavljene na GitHubu in podobnih javnih repozitorijih. V fazi usposabljanja sistem določi tipične predloge zgraditi strukture v kodi in zgraditi sintaktično drevo povezav med temi predlogami, ki odraža potek izvajanja kode v programu. Kot rezultat se oblikuje referenčno odločitveno drevo, ki združuje razvojne izkušnje vseh analiziranih izvornih besedil.

Da bi bil ControlFlag bolj dostopen širši skupnosti za razvoj programske opreme, Intel z veseljem sporoča, da je ControlFlag zdaj odprtokoden in je dostopen na https://github.com/IntelLabs/control-flag. Z veseljem dajemo razvijalcem možnost, da se na njej razvijajo in vidimo, kaj je še mogoče narediti s to izjemno dragoceno in inovativno tehnologijo.

Od svoje uvedbe je bil ControlFlag preizkušen v programski opremi na ravni proizvodnje in široko uporabljenih odprtokodnih programskih sistemih. Na primer, lani je ControlFlag odkril anomalijo kode v Client URL (cURL), projektu računalniške programske opreme, ki prenaša podatke z uporabo različnih omrežnih protokolov več kot milijardo krat na dan. Potem ko so anomalijo prijavili skupini cURL, so se strinjali z ugotovitvami ControlFlag in nato popravili svojo kodo.

Podoben postopek definiranja vzorcev se izvede za testirano kodo, ki se primerja z referenčnim drevesom odločitev. Velika neskladja s sosednjimi vejami kažejo na nepravilnost v vzorcu, ki se preverja. Sistem omogoča tudi ne samo prepoznavanje napake v predlogi, temveč tudi predlaganje rešitve. Na primer, ko razčlenjujete delček kode "če (x = 7) y = x;" sistem je ugotovil, da se konstrukcija "spremenljivka == številka" običajno uporablja v stavku "če" za primerjavo številskih vrednosti, zato je navedba "spremenljivka = številka" v stavku "če" verjetno posledica tipografske napake.

Tradicionalni statični analizatorji bi zaznali takšno napako, vendar za razliko od njih ControlFlag ne uporablja izhodiščnih pravil, v katerih je težko predvideti vse možne možnosti, temveč izhaja iz statistike uporabe vseh vrst. gradbenih del v velikem številu projektov.

Kot poskus, ko uporabljate ControlFlag v izvorni kodi pripomočka cURL, pogosto je naveden kot primer preverjene, visokokakovostne kode, statičnih analizatorjev odkril nenamerno napako pri uporabi strukturnega elementa "s-> keepon", ki je imel številski tip, vendar je bil primerjan z logično vrednostjo TRUE.

V kodi OpenSSL so bile poleg zgoraj omenjene težave z "(s1 == NULL) ∧ (s2 == NULL)" odkrite tudi anomalije v izrazih "(-2 == rv)", kar je bilo najmanj tipkarska napaka.

Poroča se tudi, da je uporaba ControlFlag omogočila odkrivanje več sto napak v nespecifični lastniški programski opremi, kar je povzročilo zrušitve in težave s pomnilnikom.

Končno če vas zanima več o tem, lahko preverite podrobnosti V naslednji povezavi. Za tiste, ki jih zanima, da bi lahko videli izvorno kodo, jo pridobili ali klonirali v skladišču, lahko to storijo iz naslednjo povezavo.


Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Odgovoren za podatke: AB Internet Networks 2008 SL
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.