Intel je objavio izvorni kod ControlFlag sustava strojnog učenja za otkrivanje pogrešaka u kodu

Intel je predstavio putem oglasa razvoj u vezi s istraživačkim projektom ControlFlag, koji je namijenjen izradi sustava strojnog učenja za poboljšanje kvalitete koda.

Alat je objavljen pod licencom MIT-a i ističe se po tome što omogućuje, na temelju modela obučenog na velikoj količini postojećeg koda, identificiranje raznih pogrešaka i anomalija u izvornim tekstovima napisanim na jezicima visoke razine kao što je C / C ++.

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

Sustav uči sam izgradnjom statističkog modela iz postojećeg niza otvorenog izvornog koda objavljenog na GitHubu i sličnim javnim spremištima. U fazi obuke, sustav određuje tipične predloške izgraditi strukture u kodu i izgraditi sintaktičko stablo veza između ovih predložaka, odražavajući tijek izvršavanja koda u programu. Kao rezultat, formira se referentno stablo odlučivanja koje kombinira 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. Zadovoljstvo nam je dati programerima priliku da se na njemu razvijaju i vide što se još može učiniti s ovom iznimno vrijednom i inovativnom tehnologijom.

Od svog uvođenja, ControlFlag je testiran u softveru na razini proizvodnje i široko korištenim softverskim sustavima otvorenog koda. Na primjer, prošle godine ControlFlag je identificirao anomaliju koda u Client URL-u (cURL), projektu računalnog 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 s nalazima ControlFlaga i naknadno zakrpili svoj kod.

Sličan proces definiranja uzoraka izvodi se za kod koji se testira, koji se uspoređuje s referentnim stablom odlučivanja. Velika odstupanja sa susjednim granama ukazuju na anomaliju uzorka koji se provjerava. Sustav također omogućuje ne samo prepoznavanje pogreške u predlošku, već i predlaganje rješenja. Na primjer, kada analizirate isječak koda "if (x = 7) y = x;" sustav je utvrdio da se konstrukcija "varijabla == broj" općenito koristi u izrazu "if" za usporedbu brojčanih vrijednosti, pa je naznaka "varijabla = broj" u izjavi "if" vjerojatno uzrokovana tipografskom pogreškom.

Tradicionalni statički analizatori otkrili bi takvu pogreš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 navodi se 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 uspoređen s booleovskom vrijednošću TRUE.

U OpenSSL kodu, uz prethodno spomenuti problem s "(s1 == NULL) ∧ (s2 == NULL)", anomalije su otkrivene i u izrazima "(-2 == rv)" što je barem bila tipkarska greška .

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

Konačno ako vas zanima više o tome, možete provjeriti detalje U sljedećem linku. Što se tiče onih koji su zainteresirani da mogu vidjeti izvorni kod, dobiti ga ili klonirati u spremištu, oni to mogu učiniti iz sljedeći link.


Ostavite svoj komentar

Vaša email adresa neće biti objavljen. Obavezna polja su označena s *

*

*

  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 obvezi.
  5. Pohrana podataka: Baza podataka koju hostira Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.