Intel je objavio izvorni kod ControlFlag sistema mašinskog učenja za otkrivanje grešaka u kodu

Intel predstavio putem oglasa razvoj u vezi sa istraživačkim projektom ControlFlag, koji je namijenjen za stvaranje sistema mašinskog učenja za poboljšanje kvaliteta koda.

Alat je objavljen pod licencom MIT-a i ističe se po tome što omogućava, na osnovu modela obučenog na velikoj količini postojećeg koda, da identifikuje različite greške i anomalije u izvornim tekstovima napisanim na jezicima visokog nivoa kao što je C/C++.

Sistem pogodan je za otkrivanje raznih vrsta problema u vašem kodu, od otkrivanja tipografskih grešaka i pogrešnih kombinacija tipova, do identificiranja nedostajućih provjera za null vrijednosti u pokazivačima i problema s memorijom.

Sistem uči sam izgradnjom statističkog modela iz postojećeg niza otvorenog koda objavljenog na GitHubu i sličnim javnim repozitorijumima. U fazi obuke, sistem određuje tipične šablone izgraditi strukture u kodu i izgraditi sintaksičko stablo veza između ovih šablona, ​​odražavajući tok izvršenja koda u programu. Kao rezultat, formira se referentno stablo odlučivanja koje kombinuje razvojno iskustvo svih analiziranih izvornih tekstova.

Kako bi ControlFlag učinio dostupnijim široj zajednici za razvoj softvera, Intel sa zadovoljstvom objavljuje da je ControlFlag sada otvorenog koda i da mu se može pristupiti na https://github.com/IntelLabs/control-flag. Sa zadovoljstvom dajemo programerima priliku da se razvijaju na njemu i vide šta se još može uraditi sa ovom izuzetno vrednom i inovativnom tehnologijom.

Od svog uvođenja, ControlFlag je testiran u softveru na nivou proizvodnje i široko korištenim softverskim sistemima otvorenog koda. Na primjer, prošle godine ControlFlag je identifikovao anomaliju koda u Client URL-u (cURL), projektu kompjuterskog softvera koji prenosi podatke koristeći različite mrežne protokole više od milijardu puta dnevno. Nakon što su prijavili anomaliju cURL timu, složili su se sa nalazima ControlFlag-a i naknadno zakrpili svoj kod.

Sličan proces definiranja obrazaca se izvodi za kod koji se testira, koji se upoređuje sa referentnim stablom odlučivanja. Velika neslaganja sa susjednim granama ukazuju na anomaliju u obrascu koji se provjerava. Sistem takođe omogućava ne samo da identifikuje grešku u šablonu, već i da predloži rešenje. Na primjer, kada analizirate isječak koda "if (x = 7) y = x;" sistem je utvrdio da se konstrukcija "varijabla == broj" općenito koristi u naredbi "if" za poređenje numeričkih vrijednosti, tako da je indikacija "varijable = broj" u izjavi "if" vjerovatno uzrokovana tipografskom greškom.

Tradicionalni statički analizatori bi otkrili takvu grešku, ali, za razliku od njih, ControlFlag ne primjenjuje gotova pravila u kojima je teško predvidjeti sve moguće opcije, već polazi od statistike korištenja svih vrsta konstrukcija u velikom broju projekata.

Kao eksperiment, kada koristite ControlFlag u izvornom kodu uslužnog programa cURL, često se navodi kao primjer provjerenog, kvalitetnog koda, statičkih analizatora otkrio nenamjernu grešku prilikom korištenja elementa strukture "s-> keepon", koji je imao numerički tip, ali je upoređen s logičkom vrijednošću TRUE.

U OpenSSL kodu, pored gore navedenog problema sa "(s1 == NULL) ∧ (s2 == NULL)", anomalije su takođe otkrivene u izrazima "(-2 == rv)" što je najmanje typo.

Također se navodi da je korištenje ControlFlag omogućilo identifikaciju nekoliko stotina grešaka u nespecifičnom vlasničkom softveru, što je dovelo do pada i problema s memorijom.

Konačno ako ste zainteresirani da saznate više o tome, možete provjeriti detalje Na sledećem linku. Što se tiče onih koji su zainteresovani da vide izvorni kod, dobiju ga ili ga kloniraju u spremištu, oni to mogu učiniti sa sljedeći link.


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Odgovoran za podatke: AB Internet Networks 2008 SL
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.