L'azienda Intel ha pubblicato la versione 1.2 dello strumento ControlFlag, che consente di identificare errori e anomalie nei testi sorgente utilizzando un sistema di apprendimento automatico addestrato su un ampio volume di codice esistente. A differenza dei tradizionali analizzatori statici, ControlFlag non applica regole predefinite, che possono essere difficili da prevedere per tutte le possibili varianti, ma si basa su statistiche sull'uso di varie costruzioni linguistiche in un gran numero di progetti esistenti. Il codice di ControlFlag è scritto in C++ ed è aperto sotto la licenza MIT.
La nuova versione è particolarmente degna di nota per l'implementazione del supporto completo per l'identificazione delle anomalie e l'apprendimento basato su modelli di codice per il linguaggio C++. Nelle versioni precedenti, tale supporto era garantito per i linguaggi C e PHP. Il sistema è adatto per identificare vari tipi di problemi nel codice, dalla rilevazione di errori di battitura e di combinazioni di tipi errati, fino all'individuazione di anomalie nelle espressioni condizionali 'if' e ai controlli mancanti di valori NULL nei puntatori. Il sistema apprende costruendo un modello statistico basato sull'array di codice dei progetti open source nei linguaggi C, C++ e PHP, pubblicati su GitHub e simili repository pubblici.
Durante la fase di apprendimento, il sistema identifica modelli tipici nella costruzione delle costruzioni nel codice e costruisce un albero sintattico delle relazioni tra questi modelli, riflettendo il flusso di esecuzione del codice nel programma. Alla fine, si forma un albero di decisione di riferimento che unisce l'esperienza di sviluppo di tutti i testi sorgente analizzati. Per il codice controllato, viene eseguito un processo simile di identificazione dei modelli, che vengono confrontati con l'albero di decisione di riferimento. Grandi discrepanze con rami adiacenti indicano la presenza di un'anomalia nel modello controllato.

Fonte: opennet.ru
