Firma Intel wydała kod źródłowy ControlFlag, systemu uczenia maszynowego do wykrywania błędów w kodzie

Intel zaprezentowany poprzez ogłoszenie opracowania związane z projektem badawczym ControlFlag, który ma na celu stworzenie systemu uczenia maszynowego w celu poprawy jakości kodu.

Narzędzie zostało wydane na licencji MIT i wyróżnia się tym, że pozwala, w oparciu o model wyszkolony na dużej ilości istniejącego kodu, identyfikować różne błędy i anomalie w tekstach źródłowych napisanych w językach wysokiego poziomu, takich jak C/C++.

System nadaje się do wykrywania różnego rodzaju problemów w Twoim kodzie, od wykrywania błędów typograficznych i nieprawidłowych kombinacji typów, po identyfikowanie brakujących sprawdzeń pod kątem wartości zerowych we wskaźnikach i problemów z pamięcią.

System sam się uczy, budując model statystyczny z istniejącej tablicy kodu open source opublikowanego na GitHub i podobnych publicznych repozytoriach. Na etapie szkolenia system określa typowe szablony do budowania struktur w kodzie i budowania drzewa syntaktycznego połączeń między tymi szablonami, odzwierciedlającego przepływ wykonywania kodu w programie. W efekcie powstaje referencyjne drzewo decyzyjne, które łączy doświadczenia programistyczne wszystkich analizowanych tekstów źródłowych.

Aby uczynić ControlFlag bardziej dostępnym dla szerszej społeczności programistów, Intel z przyjemnością ogłasza, że ​​ControlFlag jest teraz open source i można uzyskać do niego dostęp pod adresem https://github.com/IntelLabs/control-flag. Z przyjemnością dajemy programistom możliwość rozwoju na niej i zobaczenia, co jeszcze można zrobić z tą niezwykle cenną i innowacyjną technologią.

Od momentu wprowadzenia ControlFlag był testowany w oprogramowaniu na poziomie produkcyjnym i szeroko stosowanym oprogramowaniu typu open source. Na przykład w zeszłym roku ControlFlag zidentyfikował anomalię kodu w Client URL (cURL), projekcie oprogramowania komputerowego, który przesyła dane przy użyciu różnych protokołów sieciowych ponad miliard razy dziennie. Po zgłoszeniu anomalii zespołowi cURL zgodzili się z ustaleniami ControlFlag, a następnie załatali swój kod.

Podobny proces definiowania wzorców przeprowadzany jest dla testowanego kodu, który jest porównywany z referencyjnym drzewem decyzyjnym. Duże rozbieżności z sąsiednimi gałęziami wskazują na anomalię w weryfikowanym wzorze. System pozwala również nie tylko zidentyfikować błąd w szablonie, ale również zasugerować rozwiązanie. Na przykład podczas analizowania fragmentu kodu „if (x = 7) y = x;” system ustalił, że konstrukcja „zmienna == liczba” jest zwykle używana w zdaniu „if” do porównywania wartości liczbowych, więc wskazanie „zmienna = liczba” w zdaniu „if” jest prawdopodobnie spowodowane błędem typograficznym .

Tradycyjne analizatory statyczne wykryłyby taki błąd, ale w przeciwieństwie do nich ControlFlag nie stosuje nieszablonowych reguł, w których trudno przewidzieć wszystkie możliwe opcje, a raczej zaczyna od statystyk użycia wszelkiego rodzaju konstrukcji w wielu projektach.

Eksperymentalnie, podczas używania ControlFlag w kodzie źródłowym narzędzia cURL, często jest cytowany jako przykład sprawdzonego, wysokiej jakości kodu, analizatorów statycznych ujawnił nieumyślny błąd podczas używania elementu struktury "s-> keepon", który miał typ liczbowy, ale został porównany z wartością logiczną TRUE.

W kodzie OpenSSL, oprócz wspomnianego powyżej problemu z „(s1 == NULL) ∧ (s2 == NULL)”, wykryto również anomalie w wyrażeniach „(-2 == rv)”, które były co najmniej literówka.

Poinformowano również, że użycie ControlFlag umożliwiło zidentyfikowanie kilkuset błędów w niespecyficznym, własnościowym oprogramowaniu, prowadzących do awarii i problemów z pamięcią.

W końcu jeśli chcesz dowiedzieć się więcej na ten tematmożesz sprawdzić szczegóły W poniższym linku. Jeśli chodzi o tych, którzy są zainteresowani możliwością zobaczenia kodu źródłowego, uzyskania go lub sklonowania w repozytorium, mogą to zrobić z poniższy link.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: AB Internet Networks 2008 SL
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.