Intel udgav kildekoden til ControlFlag et maskinlæringssystem for at opdage fejl i koden

Intel afslørede gennem en annonce udvikling i forbindelse med ControlFlag-forskningsprojektet, som har til formål at skabe et maskinlæringssystem for at forbedre kvaliteten af ​​koden.

Værktøjet er udgivet under MIT-licensen og det skiller sig ud ved at tillade, baseret på en model trænet på en stor mængde eksisterende kode, at identificere forskellige fejl og anomalier i kildetekster skrevet på højt niveau sprog som C/C++.

Systemet den er velegnet til at opdage forskellige typer problemer i din kode, fra at detektere typografiske fejl og forkerte typekombinationer, til at identificere manglende checks for nulværdier i pointere og problemer med hukommelsen.

Systemet lærer af sig selv ved at bygge en statistisk model fra den eksisterende række af åben kildekode offentliggjort på GitHub og lignende offentlige arkiver. I træningsfasen fastlægger systemet typiske skabeloner at bygge strukturer i koden og bygge et syntaktisk træ af forbindelser mellem disse skabeloner, hvilket afspejler strømmen af ​​kodeeksekvering i programmet. Som et resultat dannes et referencebeslutningstræ, der kombinerer udviklingserfaringen fra alle analyserede kildetekster.

For at gøre ControlFlag mere tilgængelig for det bredere softwareudviklingsfællesskab, er Intel glad for at kunne meddele, at ControlFlag nu er open source og kan tilgås på https://github.com/IntelLabs/control-flag. Vi er glade for at give udviklere mulighed for at udvikle på det og se, hvad der ellers kan gøres med denne ekstremt værdifulde og innovative teknologi.

Siden introduktionen er ControlFlag blevet testet i software på produktionsniveau og udbredte open source-softwaresystemer. For eksempel identificerede ControlFlag sidste år en kodeanomali i Client URL (cURL), et computersoftwareprojekt, der overfører data ved hjælp af forskellige netværksprotokoller mere end XNUMX milliard gange om dagen. Efter at have rapporteret anomalien til cURL-teamet, var de enige i ControlFlags resultater og lappede efterfølgende deres kode.

En lignende proces med at definere mønstre udføres for den kode, der testes, som sammenlignes med et referencebeslutningstræ. Store uoverensstemmelser med tilstødende grene indikerer en anomali i det mønster, der verificeres. Systemet giver også mulighed for ikke kun at identificere en fejl i skabelonen, men også at foreslå en løsning. For eksempel, når du analyserer kodestykket "if (x = 7) y = x;" systemet har fastslået, at konstruktionen "variabel == tal" generelt bruges i udsagnet "hvis" til at sammenligne numeriske værdier, så indikationen "variabel = tal" i udsagnet "hvis" er sandsynligvis forårsaget af en typografisk fejl .

Traditionelle statiske analysatorer vil opdage en sådan fejl, men i modsætning til dem anvender ControlFlag ikke out-of-the-box regler, hvor det er svært at forudse alle mulige muligheder, men tager udgangspunkt i statistikken over brugen af ​​alle slags af byggerier i en lang række projekter.

Som et eksperiment, når du bruger ControlFlag i kildekoden til cURL-værktøjet, det ofte er nævnt som eksempel af gennemprøvede, højkvalitets kode, statiske analysatorer afslørede en utilsigtet fejl ved brug af strukturelementet "s-> keepon", som havde en numerisk type, men blev sammenlignet med den boolske værdi TRUE.

I OpenSSL-koden blev der, ud over problemet nævnt ovenfor med "(s1 == NULL) ∧ (s2 == NULL)", også opdaget anomalier i udtrykkene "(-2 == rv)", som var mindst en tastefejl.

Det er også rapporteret, at brugen af ​​ControlFlag gjorde det muligt at identificere flere hundrede fejl i ikke-specifik proprietær software, hvilket førte til nedbrud og hukommelsesproblemer.

Endelig hvis du er interesseret i at vide mere om det, kan du kontrollere detaljerne I det følgende link. Hvad angår dem, der er interesseret i at kunne se kildekoden, få den eller klone den i et depot, kan de gøre det fra følgende link.


Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for data: AB Internet Networks 2008 SL
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.