Firma Intel ogłosiła wydanie narzędzi ControlFlag 1.2, które umożliwiają wykrywanie błędów i anomalii w kodzie źródłowym, wykorzystując system uczenia maszynowego, wytrenowany na dużej ilości istniejącego kodu. W przeciwieństwie do tradycyjnych analizatorów statycznych, ControlFlag nie stosuje gotowych reguł, w których trudno przewidzieć wszystkie możliwe przypadki, lecz opiera się na statystyce użycia różnych konstrukcji językowych w wielu istniejących projektach. Kod ControlFlag jest napisany w języku C++ i jest dostępny na licencji MIT.
Nowe wydanie wyróżnia się wprowadzeniem pełnego wsparcia dla wykrywania anomalii oraz uczenia się na podstawie wzorców kodu dla języka C++. W poprzednich wersjach takie wsparcie zapewnione było dla języków C i PHP. System jest przeznaczony do identyfikacji różnych rodzajów problemów w kodzie, od wykrywania literówek i błędnych kombinacji typów po identyfikowanie anomalii w wyrażeniach warunkowych „if” i pominiętych sprawdzeń wartości NULL w wskaźnikach. System uczy się poprzez budowanie statystycznego modelu istniejącego zbioru kodu otwartych projektów w językach C, C++ i PHP, opublikowanych w GitHub i podobnych publicznych repozytoriach.
Na etapie uczenia system identyfikuje typowe wzorce konstrukcji w kodzie i buduje drzewo składniowe powiązań między tymi wzorcami, odzwierciedlające przepływ wykonywania kodu w programie. W efekcie formuje się wzorcowe drzewo podejmowania decyzji, łączące doświadczenie rozwoju wszystkich analizowanych kodów źródłowych. Dla kodu poddanego weryfikacji przeprowadzany jest podobny proces identyfikacji wzorców, które są porównywane z wzorcowym drzewem podejmowania decyzji. Duże rozbieżności z sąsiednimi gałęziami świadczą o występowaniu anomalii w sprawdzanym wzorcu.

Źródło: opennet.ru
