Intel ha rilasciato il codice sorgente di ControlFlag, un sistema di apprendimento automatico per rilevare errori nel codice

Intel svelata attraverso un annuncio pubblicitario sviluppi relativi al progetto di ricerca ControlFlag, che ha lo scopo di creare un sistema di apprendimento automatico per migliorare la qualità del codice.

Lo strumento è stato rilasciato sotto licenza MIT e si distingue per consentire, sulla base di un modello addestrato su una grande quantità di codice esistente, di identificare vari errori e anomalie nei testi sorgente scritti in linguaggi di alto livello come C/C++.

il sistema è adatto per rilevare vari tipi di problemi nel codice, dal rilevamento di errori tipografici e combinazioni di tipi errate, all'identificazione di controlli mancanti per valori nulli nei puntatori e problemi con la memoria.

Il sistema apprende da solo costruendo un modello statistico dall'array esistente di codice open source pubblicato su GitHub e repository pubblici simili. Nella fase di formazione, il sistema determina i modelli tipici per costruire strutture nel codice e costruire un albero sintattico di connessioni tra questi modelli, che rifletta il flusso di esecuzione del codice nel programma. Di conseguenza, viene formato un albero decisionale di riferimento, che combina l'esperienza di sviluppo di tutti i testi di origine analizzati.

Per rendere ControlFlag più disponibile alla più ampia comunità di sviluppo software, Intel è lieta di annunciare che ControlFlag è ora open source ed è possibile accedervi all'indirizzo https://github.com/IntelLabs/control-flag. Siamo lieti di offrire agli sviluppatori l'opportunità di sviluppare su di esso e vedere cos'altro si può fare con questa tecnologia estremamente preziosa e innovativa.

Dalla sua introduzione, ControlFlag è stato testato in software a livello di produzione e sistemi software open source ampiamente utilizzati. Ad esempio, l'anno scorso, ControlFlag ha identificato un'anomalia del codice in Client URL (cURL), un progetto software per computer che trasferisce dati utilizzando vari protocolli di rete più di XNUMX miliardo di volte al giorno. Dopo aver segnalato l'anomalia al team di cURL, hanno concordato con i risultati di ControlFlag e successivamente hanno corretto il loro codice.

Un processo simile di definizione dei modelli viene eseguito per il codice in prova, che viene confrontato con un albero decisionale di riferimento. Grandi discrepanze con rami adiacenti indicano un'anomalia nel modello che viene verificato. Il sistema consente inoltre non solo di identificare un errore nel modello, ma anche di suggerire una soluzione. Ad esempio, durante l'analisi del frammento di codice "if (x = 7) y = x;" il sistema ha stabilito che la costruzione "variabile == numero" è generalmente utilizzata nell'istruzione "if" per confrontare valori numerici, quindi l'indicazione "variabile = numero" nell'istruzione "if" è probabilmente causata da un errore tipografico.

Gli analizzatori statici tradizionali rileverebbero un tale errore, ma, a differenza di loro, ControlFlag non applica regole predefinite, in cui è difficile prevedere tutte le opzioni possibili, ma parte dalle statistiche di utilizzo di ogni tipo di costruzioni in un gran numero di progetti.

Come esperimento, quando si utilizza ControlFlag nel codice sorgente dell'utilità cURL, spesso è citato come esempio di collaudato codice di alta qualità, analizzatori statici ha rivelato un bug involontario durante l'utilizzo dell'elemento struttura "s-> keepon", che aveva un tipo numerico, ma è stato confrontato con il valore booleano TRUE.

Nel codice OpenSSL, oltre al problema sopra citato con "(s1 == NULL) ∧ (s2 == NULL)", sono state rilevate anomalie anche nelle espressioni "(-2 == rv)" che era almeno un errore di battitura

È stato inoltre riferito che l'uso di ControlFlag ha permesso di identificare diverse centinaia di bug in software proprietario non specifico, causando arresti anomali e problemi di memoria.

Infine se sei interessato a saperne di più, puoi controllare i dettagli nel seguente link Per quanto riguarda chi è interessato a poter vedere il codice sorgente, ottenerlo o clonarlo in un repository, può farlo da il seguente collegamento.


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile del trattamento: AB Internet Networks 2008 SL
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.