Intel julkaisi ControlFlag-koneoppimisjärjestelmän lähdekoodin koodin virheiden havaitsemiseksi

Intel julkisti mainoksen kautta ControlFlag-tutkimusprojektiin liittyvä kehitys, jonka tarkoituksena on luoda koneoppimisjärjestelmä koodin laadun parantamiseksi.

Työkalu on julkaistu MIT-lisenssillä ja se erottuu siitä, että se mahdollistaa suurelle määrälle olemassa olevaa koodia koulutetun mallin perusteella tunnistaa erilaisia ​​virheitä ja poikkeavuuksia korkean tason kielillä kirjoitetuissa lähdeteksteissä, kuten C / C ++.

Järjestelmä se soveltuu tunnistamaan erilaisia ​​koodisi ongelmia, typografisten virheiden ja virheellisten tyyppiyhdistelmien havaitsemisesta osoittimien nolla-arvojen puuttuvien tarkistusten ja muistiongelmien tunnistamiseen.

Järjestelmä oppii itsestään rakentamalla tilastollisen mallin olemassa olevasta avoimen lähdekoodin ryhmästä, joka on julkaistu GitHubissa ja vastaavissa julkisissa arkistoissa. Koulutusvaiheessa järjestelmä määrittää tyypilliset mallit rakentaa rakenteita koodiin ja rakentaa syntaktinen puu yhteyksistä näiden mallien välille, mikä kuvastaa koodin suorittamisen kulkua ohjelmassa. Tuloksena muodostuu viitepäätöspuu, joka yhdistää kaikkien analysoitujen lähdetekstien kehityskokemukset.

Tehdäkseen ControlFlagin laajemman ohjelmistokehitysyhteisön saataville Intelilla on ilo ilmoittaa, että ControlFlag on nyt avoimen lähdekoodin lähde ja se on käytettävissä osoitteessa https://github.com/IntelLabs/control-flag. Meillä on ilo antaa kehittäjille mahdollisuus kehittää sitä ja nähdä, mitä muuta tällä erittäin arvokkaalla ja innovatiivisella tekniikalla voidaan tehdä.

Käyttöönoton jälkeen ControlFlagia on testattu tuotantotason ohjelmistoissa ja laajasti käytetyissä avoimen lähdekoodin ohjelmistojärjestelmissä. Esimerkiksi viime vuonna ControlFlag havaitsi koodipoikkeaman Client URL:ssä (cURL), tietokoneohjelmistoprojektissa, joka siirtää tietoja eri verkkoprotokollien avulla yli miljardi kertaa päivässä. Ilmoitettuaan poikkeamasta cURL-tiimille he hyväksyivät ControlFlagin havainnot ja korjasivat myöhemmin koodinsa.

Samanlainen kuvioiden määrittelyprosessi suoritetaan testattavalle koodille, jota verrataan viitepäätöspuuhun. Suuret erot vierekkäisten haarojen kanssa osoittavat poikkeavaa kuviossa, jota tarkistetaan. Järjestelmä mahdollistaa myös virheen tunnistamisen mallissa, mutta myös ratkaisun ehdottamisen. Esimerkiksi jäsennettäessä koodinpätkää "if (x = 7) y = x;" järjestelmä on määrittänyt, että lausekkeessa "if" käytetään yleensä konstruktiota "muuttuja == numero" numeeristen arvojen vertailuun, joten "jos" lausekkeen merkintä "muuttuja = numero" johtuu todennäköisesti typografisesta virheestä.

Perinteiset staattiset analysaattorit tunnistaisivat tällaisen virheen, mutta toisin kuin he, ControlFlag ei ​​käytä valmiita sääntöjä, joissa on vaikea ennakoida kaikkia mahdollisia vaihtoehtoja, vaan se lähtee kaikenlaisten käyttötilastoista. monissa hankkeissa.

Kokeiluna, kun käytät ControlFlagia cURL-apuohjelman lähdekoodissa, että usein mainitaan esimerkkinä todistettu, korkealaatuinen koodi, staattinen analysaattori paljasti tahattoman bugin käytettäessä rakenneelementtiä "s-> keepon", jolla oli numeerinen tyyppi, mutta sitä verrattiin loogiseen arvoon TOSI.

OpenSSL-koodissa yllä mainitun ongelman "(s1 == NULL) ∧ (s2 == NULL)" lisäksi poikkeavuuksia havaittiin myös lausekkeissa "(-2 == rv)", joka oli vähintään kirjoitusvirhe.

On myös raportoitu, että ControlFlagin käyttö mahdollisti useiden satojen virheiden tunnistamisen ei-spesifisistä patentoiduista ohjelmistoista, mikä johti kaatumisiin ja muistiongelmiin.

Vihdoin jos olet kiinnostunut tietämään siitä lisää, voit tarkistaa yksityiskohdat Seuraavassa linkissä. Ne, jotka haluavat nähdä lähdekoodin, hankkia sen tai kloonata sen arkistoon, voivat tehdä sen seuraava linkki.


Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

*

*

  1. Vastaa tiedoista: AB Internet Networks 2008 SL
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.