„Intel“ išleido „ControlFlag“ automatinio mokymosi sistemos šaltinio kodą, kad aptiktų kodo klaidas

„Intel“ pristatė per reklamą pokyčius, susijusius su „ControlFlag“ tyrimų projektu, kuria siekiama sukurti mašininio mokymosi sistemą, kad pagerintų kodo kokybę.

Įrankis buvo išleistas pagal MIT licenciją ir išsiskiria tuo, kad, remiantis modeliu, parengtu remiantis dideliu esamo kodo kiekiu, leidžia nustatyti įvairias klaidas ir anomalijas šaltinio tekstuose, parašytuose aukšto lygio kalbomis, tokiomis kaip C / C ++.

Sistema jis tinka aptikti įvairių tipų jūsų kodo problemas, nuo spausdinimo klaidų ir neteisingų tipų derinių aptikimo iki trūkstamų nulinių reikšmių rodyklių patikrinimų ir atminties problemų nustatymo.

Sistema mokosi pati, kurdama statistinį modelį iš esamo atvirojo kodo masyvo, paskelbto GitHub ir panašiose viešose saugyklose. Mokymo etape sistema nustato tipinius šablonus sukurti kode struktūras ir sukurti sintaksinį jungčių medį tarp šių šablonų, atspindintį kodo vykdymo srautą programoje. Dėl to susidaro nuorodų sprendimų medis, apjungiantis visų analizuojamų šaltinių tekstų kūrimo patirtį.

Kad „ControlFlag“ būtų labiau prieinama platesnei programinės įrangos kūrimo bendruomenei, „Intel“ su malonumu praneša, kad „ControlFlag“ dabar yra atvirojo kodo ir jį galima pasiekti adresu https://github.com/IntelLabs/control-flag. Džiaugiamės galėdami suteikti kūrėjams galimybę ją tobulinti ir pamatyti, ką dar galima padaryti naudojant šią nepaprastai vertingą ir novatorišką technologiją.

Nuo pat pristatymo „ControlFlag“ buvo išbandytas gamybos lygio programinėje įrangoje ir plačiai naudojamose atvirojo kodo programinės įrangos sistemose. Pavyzdžiui, praėjusiais metais „ControlFlag“ nustatė kodo anomaliją „Client URL“ (cURL), kompiuterio programinės įrangos projekte, kuris perduoda duomenis naudodamas įvairius tinklo protokolus daugiau nei XNUMX milijardą kartų per dieną. Pranešę apie anomaliją cURL komandai, jie sutiko su ControlFlag išvadomis ir vėliau pataisė savo kodą.

Panašus šablonų apibrėžimo procesas atliekamas bandomam kodui, kuris lyginamas su atskaitos sprendimų medžiu. Dideli neatitikimai su gretimomis šakomis rodo tikrinamo modelio anomaliją. Taip pat sistema leidžia ne tik atpažinti šablono klaidą, bet ir pasiūlyti sprendimą. Pavyzdžiui, analizuojant kodo fragmentą "if (x = 7) y = x;" sistema nustatė, kad konstrukcija "kintamasis == skaičius" paprastai naudojama sakinyje "if", norint palyginti skaitines reikšmes, todėl nuoroda "kintamasis = skaičius" teiginyje "jei" tikriausiai atsirado dėl tipografinės klaidos .

Tradiciniai statiniai analizatoriai aptiktų tokią klaidą, tačiau, skirtingai nei jie, „ControlFlag“ netaiko „out-of-the-box“ taisyklių, kuriose sunku numatyti visas įmanomas parinktis, o pradedama nuo visų rūšių naudojimo statistikos. konstrukcijų. daugelyje projektų.

Kaip eksperimentas, kai naudojate ControlFlag cURL programos šaltinio kode, dažnai yra nurodytas kaip pavyzdys patikrintų, aukštos kokybės kodų, statinių analizatorių atskleidė netyčinę klaidą naudojant struktūros elementą "s-> keepon", kuris turėjo skaitinį tipą, bet buvo lyginamas su logine reikšme TRUE.

OpenSSL kode, be anksčiau minėtos problemos su "(s1 == NULL) ∧ (s2 == NULL)", anomalijos taip pat buvo aptiktos išraiškose "(-2 == rv)", kurios buvo bent rašybos klaida.

Taip pat pranešama, kad „ControlFlag“ naudojimas leido nustatyti kelis šimtus nespecifinės patentuotos programinės įrangos klaidų, dėl kurių atsirado gedimų ir atminties problemų.

Pagaliau jei norite sužinoti daugiau apie tai, galite patikrinti išsamią informaciją Šioje nuorodoje. Tie, kurie domisi galimybe pamatyti šaltinio kodą, jį gauti arba klonuoti saugykloje, jie gali tai padaryti iš šią nuorodą.


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Už duomenis atsakingas: AB Internet Networks 2008 SL
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.