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

Intel je predstavio путем огласа razvoj u vezi sa istraživačkim projektom ControlFlag, koji je namenjen kreiranju sistema mašinskog učenja radi poboljšanja 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 ++.

Систем pogodan je za otkrivanje različitih vrsta problema u vašem kodu, od otkrivanja štamparskih grešaka i netačnih kombinacija tipova, do identifikovanja nedostajućih provera za nul vrednosti u pokazivačima i problema sa memorijom.

Sistem uči sam izgradnjom statističkog modela iz postojećeg niza otvorenog koda objavljenog na GitHub-u i sličnim javnim repozitorijumima. U fazi obuke, sistem određuje tipične šablone da izgradi strukture u kodu i izgradi 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.

Da 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šćenim softverskim sistemima otvorenog koda. Na primer, prošle godine ControlFlag je identifikovao anomaliju koda u Client URL-u (cURL), projektu računarskog 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 definisanja obrazaca se izvodi za kod koji se testira, koji se upoređuje sa referentnim stablom odlučivanja. Velika neslaganja sa susednim granama ukazuju na anomaliju u obrascu koji se proverava. Sistem takođe omogućava ne samo da identifikuje grešku u šablonu, već i da predloži rešenje. Na primer, kada analizirate isečak koda „if (x = 7) y = x;“ sistem je utvrdio da se konstrukcija „promenljiva == broj“ generalno koristi u naredbi „ako“ za poređenje numeričkih vrednosti, pa je indikacija „promenljiva = broj“ u izjavi „ako“ verovatno uzrokovana štamparskom greškom .

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

Kao eksperiment, kada koristite ControlFlag u izvornom kodu uslužnog programa cURL, често navodi se kao primer proverenog, kvalitetnog koda, statičkih analizatora otkrio nenamernu grešku prilikom korišćenja elementa strukture "s-> keepon", koji je imao numerički tip, ali je upoređen sa logičkom vrednošću TRUE.

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

Takođe se navodi da je upotreba ControlFlag-a omogućila da se identifikuje nekoliko stotina grešaka u nespecifičnom vlasničkom softveru, što je dovelo do kvarova i problema sa memorijom.

Коначно ако сте заинтересовани да сазнате више о томе, можете проверити детаље У следећем линку. Š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 следећи линк.


Оставите свој коментар

Ваша емаил адреса неће бити објављена. Обавезна поља су означена са *

*

*

  1. Odgovorni za podatke: AB Internet Networks 2008 SL
  2. Сврха података: Контрола нежељене поште, управљање коментарима.
  3. Легитимација: Ваш пристанак
  4. Комуникација података: Подаци се неће преносити трећим лицима, осим по законској обавези.
  5. Похрана података: База података коју хостује Оццентус Нетворкс (ЕУ)
  6. Права: У било ком тренутку можете ограничити, опоравити и избрисати своје податке.