Intel lëshoi ​​kodin burimor të ControlFlag një sistem të mësimit të makinës për të zbuluar gabimet në kod

Intel zbuloi përmes një reklame zhvillimet në lidhje me projektin kërkimor ControlFlag, i cili synon të krijojë një sistem të mësimit të makinerive për të përmirësuar cilësinë e kodit.

Mjeti është lëshuar nën licencën MIT dhe dallohet për të lejuar, bazuar në një model të trajnuar në një sasi të madhe kodi ekzistues, të identifikojë gabime dhe anomali të ndryshme në tekstet burimore të shkruara në gjuhë të nivelit të lartë si C / C ++.

Sistemi është i përshtatshëm për zbulimin e llojeve të ndryshme të problemeve në kodin tuaj, nga zbulimi i gabimeve tipografike dhe kombinimet e gabuara të tipit, deri te identifikimi i kontrolleve që mungojnë për vlerat nule në tregues dhe problemet me memorien.

Sistemi mëson vetë duke ndërtuar një model statistikor nga grupi ekzistues i kodit me burim të hapur të publikuar në GitHub dhe depo publike të ngjashme. Në fazën e trajnimit, sistemi përcakton shabllonet tipike për të ndërtuar struktura në kod dhe për të ndërtuar një pemë sintaksore të lidhjeve midis këtyre shablloneve, duke reflektuar rrjedhën e ekzekutimit të kodit në program. Si rezultat, formohet një pemë e vendimeve referuese, e cila kombinon përvojën e zhvillimit të të gjitha teksteve burimore të analizuara.

Për ta bërë ControlFlag më të disponueshëm për komunitetin më të gjerë të zhvillimit të softuerit, Intel ka kënaqësinë të njoftojë se ControlFlag tani është me burim të hapur dhe mund të aksesohet në https://github.com/IntelLabs/control-flag. Kemi kënaqësinë t'u japim zhvilluesve mundësinë për të zhvilluar mbi të dhe për të parë se çfarë tjetër mund të bëhet me këtë teknologji jashtëzakonisht të vlefshme dhe inovative.

Që nga prezantimi i tij, ControlFlag është testuar në softuerët e nivelit të prodhimit dhe sistemet softuerike me burim të hapur të përdorur gjerësisht. Për shembull, vitin e kaluar, ControlFlag identifikoi një anomali kodi në URL-në e klientit (cURL), një projekt softuer kompjuterik që transferon të dhëna duke përdorur protokolle të ndryshme rrjeti më shumë se XNUMX miliard herë në ditë. Pasi raportuan anomalinë te ekipi i cURL, ata ranë dakord me gjetjet e ControlFlag dhe më pas korrigjuan kodin e tyre.

Një proces i ngjashëm i përcaktimit të modeleve kryhet për kodin në provë, e cila krahasohet me një pemë vendimi referimi. Mospërputhjet e mëdha me degët ngjitur tregojnë një anomali në modelin që po verifikohet. Sistemi gjithashtu lejon jo vetëm të identifikojë një gabim në shabllon, por edhe të sugjerojë një zgjidhje. Për shembull, kur analizoni fragmentin e kodit "if (x = 7) y = x;" sistemi ka përcaktuar që konstruksioni "variabla == numër" përdoret përgjithësisht në pohimin "nëse" për të krahasuar vlerat numerike, kështu që treguesi "variabla = numër" në deklaratën "nëse" është shkaktuar ndoshta nga një gabim shtypi.

Analizuesit statikë tradicionalë do të zbulonin një gabim të tillë, por, ndryshe nga ata, ControlFlag nuk zbaton rregulla jashtë kutisë, në të cilat është e vështirë të parashikohen të gjitha opsionet e mundshme, por niset nga statistikat e përdorimit të të gjitha llojeve. të ndërtimeve.në një numër të madh projektesh.

Si një eksperiment, kur përdorni ControlFlag në kodin burimor të mjetit cURL, shpesh citohet si shembull me kod të provuar, me cilësi të lartë, analizues statikë zbuloi një gabim të paqëllimshëm kur përdor elementin e strukturës "s-> keepon", e cila kishte një tip numerik, por krahasohej me vlerën boolean TRUE.

Në kodin OpenSSL, përveç problemit të lartpërmendur me "(s1 == NULL) ∧ (s2 == NULL)", u zbuluan anomali edhe në shprehjet "(-2 == rv)" që ishte të paktën një gabim shtypi. .

Raportohet gjithashtu se përdorimi i ControlFlag bëri të mundur identifikimin e disa qindra gabimeve në softuer jospecifik të pronarit, duke çuar në përplasje dhe probleme me kujtesën.

Më në fund nëse jeni të interesuar të dini më shumë për të, ju mund të kontrolloni detajet Në lidhjen vijuese. Sa për ata që janë të interesuar të jenë në gjendje të shohin kodin burimor, ta marrin atë ose ta klonojnë atë në një depo, ata mund ta bëjnë këtë nga lidhja e mëposhtme.


Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: AB Internet Networks 2008 SL
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.