Intel ga ut kildekoden til ControlFlag et maskinlæringssystem for å oppdage feil i koden

Intel avduket gjennom en annonse utvikling knyttet til forskningsprosjektet ControlFlag, som er ment å lage et maskinlæringssystem for å forbedre kvaliteten på koden.

Verktøyet er utgitt under MIT-lisensen og det skiller seg ut for å tillate, basert på en modell trent på en stor mengde eksisterende kode, å identifisere ulike feil og anomalier i kildetekster skrevet på høynivåspråk som C/C++.

Systemet den er egnet for å oppdage ulike typer problemer i koden din, fra å oppdage typografiske feil og feil typekombinasjoner, til å identifisere manglende sjekker for nullverdier i pekere og problemer med minne.

Systemet lærer av seg selv ved å bygge en statistisk modell fra det eksisterende utvalget av åpen kildekode publisert på GitHub og lignende offentlige depoter. På opplæringsstadiet bestemmer systemet typiske maler å bygge strukturer i koden og bygge et syntaktisk tre av forbindelser mellom disse malene, som gjenspeiler flyten av kodeutførelse i programmet. Som et resultat dannes et referansebeslutningstre, som kombinerer utviklingserfaringen til alle analyserte kildetekster.

For å gjøre ControlFlag mer tilgjengelig for det bredere programvareutviklingsfellesskapet, er Intel glade for å kunngjøre at ControlFlag nå er åpen kildekode og kan nås på https://github.com/IntelLabs/control-flag. Vi er glade for å gi utviklere muligheten til å utvikle seg på det og se hva annet som kan gjøres med denne ekstremt verdifulle og innovative teknologien.

Siden introduksjonen har ControlFlag blitt testet i programvare på produksjonsnivå og mye brukte programvaresystemer med åpen kildekode. For eksempel identifiserte ControlFlag i fjor en kodeanomali i Client URL (cURL), et dataprogramvareprosjekt som overfører data ved hjelp av ulike nettverksprotokoller mer enn XNUMX milliard ganger om dagen. Etter å ha rapportert anomalien til cURL-teamet, var de enige i ControlFlags funn og lappet deretter koden deres.

En lignende prosess for å definere mønstre utføres for koden som testes, som sammenlignes med et referansebeslutningstre. Store avvik med tilstøtende grener indikerer en anomali i mønsteret som blir verifisert. Systemet lar også ikke bare identifisere en feil i malen, men også foreslå en løsning. For eksempel, når du analyserer kodebiten "if (x = 7) y = x;" systemet har bestemt at konstruksjonen "variabel == tall" vanligvis brukes i setningen "hvis" for å sammenligne numeriske verdier, så indikasjonen "variabel = tall" i setningen "hvis" er sannsynligvis forårsaket av en typografisk feil .

Tradisjonelle statiske analysatorer vil oppdage en slik feil, men i motsetning til dem, bruker ikke ControlFlag ut-av-boksen-regler, der det er vanskelig å forutse alle mulige alternativer, men tar utgangspunkt i statistikken over bruk av alle slag. av konstruksjoner i et stort antall prosjekter.

Som et eksperiment, når du bruker ControlFlag i kildekoden til cURL-verktøyet, ofte nevnes som eksempel av utprøvde, høykvalitets kode, statiske analysatorer avslørte en utilsiktet feil ved bruk av strukturelementet "s-> keepon", som hadde en numerisk type, men ble sammenlignet med den boolske verdien TRUE.

I OpenSSL-koden, i tillegg til problemet nevnt ovenfor med "(s1 == NULL) ∧ (s2 == NULL)", ble det også oppdaget anomalier i uttrykkene "(-2 == rv)" som var minst en skrivefeil.

Det rapporteres også at bruken av ControlFlag gjorde det mulig å identifisere flere hundre feil i ikke-spesifikk proprietær programvare, noe som førte til krasj og minneproblemer.

Endelig hvis du er interessert i å vite mer om det, kan du sjekke detaljene I den følgende lenken. Når det gjelder de som er interessert i å kunne se kildekoden, skaffe den eller klone den i et depot, kan de gjøre det fra følgende lenke.


Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: AB Internet Networks 2008 SL
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.