Intel släppte källkoden för ControlFlag ett maskininlärningssystem för att upptäcka fel i koden

Intel avslöjade genom en annons utveckling relaterade till ControlFlag-forskningsprojektet, som är tänkt att skapa ett maskininlärningssystem för att förbättra kodens kvalitet.

Verktyget har släppts under MIT-licensen och det sticker ut för att tillåta, baserat på en modell tränad på en stor mängd befintlig kod, att identifiera olika fel och anomalier i källtexter skrivna på högnivåspråk som C/C++.

Systemet den är lämplig för att upptäcka olika typer av problem i din kod, från att upptäcka typografiska fel och felaktiga typkombinationer, till att identifiera saknade kontroller för nollvärden i pekare och problem med minnet.

Systemet lär sig av sig självt genom att bygga en statistisk modell från den befintliga uppsättningen av öppen källkod publicerad på GitHub och liknande offentliga arkiv. I utbildningsstadiet bestämmer systemet typiska mallar att bygga strukturer i koden och bygga ett syntaktiskt träd av kopplingar mellan dessa mallar, vilket återspeglar flödet av kodexekvering i programmet. Som ett resultat bildas ett referensbeslutsträd, som kombinerar utvecklingserfarenheten från alla analyserade källtexter.

För att göra ControlFlag mer tillgängligt för den bredare mjukvaruutvecklingsgemenskapen, är Intel glada att kunna meddela att ControlFlag nu är öppen källkod och kan nås på https://github.com/IntelLabs/control-flag. Vi är glada över att kunna ge utvecklare möjligheten att utvecklas på det och se vad mer som kan göras med denna extremt värdefulla och innovativa teknik.

Sedan introduktionen har ControlFlag testats i mjukvara på produktionsnivå och ofta använda mjukvarusystem med öppen källkod. Till exempel identifierade ControlFlag förra året en kodavvikelse i Client URL (cURL), ett datorprogramvaruprojekt som överför data med olika nätverksprotokoll mer än XNUMX miljard gånger om dagen. Efter att ha rapporterat anomalien till cURL-teamet instämde de i ControlFlags resultat och patchade sedan sin kod.

En liknande process för att definiera mönster utförs för koden som testas, som jämförs med ett referensbeslutsträd. Stora avvikelser med intilliggande grenar indikerar en anomali i mönstret som verifieras. Systemet tillåter inte bara att identifiera ett fel i mallen, utan också att föreslå en lösning. Till exempel när kodavsnittet "if (x = 7) y = x;" analyseras systemet har fastställt att konstruktionen "variabel == nummer" i allmänhet används i satsen "if" för att jämföra numeriska värden, så indikationen "variabel = nummer" i satsen "if" är troligen orsakad av ett typografiskt fel .

Traditionella statiska analysatorer skulle upptäcka ett sådant fel, men till skillnad från dem, tillämpar ControlFlag inte out-of-the-box-regler, där det är svårt att förutse alla möjliga alternativ, utan snarare utgår från statistiken över användningen av alla slag av konstruktioner i ett stort antal projekt.

Som ett experiment, när du använder ControlFlag i källkoden för verktyget cURL, det ofta nämns som exempel av beprövade statiska analysatorer av hög kvalitet avslöjade en oavsiktlig bugg när strukturelementet "s-> keepon" användes, som hade en numerisk typ, men jämfördes med det booleska värdet TRUE.

I OpenSSL-koden upptäcktes, förutom det tidigare nämnda problemet med "(s1 == NULL) ∧ (s2 == NULL)", även anomalier i uttrycken "(-2 == rv)", vilket åtminstone var ett stavfel .

Det rapporteras också att användningen av ControlFlag gjorde det möjligt att identifiera flera hundra buggar i icke-specifik proprietär programvara, vilket ledde till krascher och minnesproblem.

Slutligen om du är intresserad av att veta mer om detkan du kontrollera detaljerna I följande länk. När det gäller de som är intresserade av att kunna se källkoden, skaffa den eller klona den i ett arkiv kan de göra det från följande länk.


Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för data: AB Internet Networks 2008 SL
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.