Intel a lansat codul sursă al ControlFlag, un sistem de învățare automată pentru a detecta erorile din cod

Intel a dezvăluit printr-o reclamă evoluții legate de proiectul de cercetare ControlFlag, care are scopul de a crea un sistem de învățare automată pentru a îmbunătăți calitatea codului.

Instrumentul a fost lansat sub licența MIT și se remarcă prin faptul că permite, pe baza unui model antrenat pe o cantitate mare de cod existent, identificarea diferitelor erori și anomalii în textele sursă scrise în limbaje de nivel înalt precum C/C++.

Sistemul este potrivit pentru detectarea diferitelor tipuri de probleme în codul dvs., de la detectarea erorilor de tipar și a combinațiilor incorecte de tip, până la identificarea verificărilor lipsă pentru valorile nule în pointere și probleme cu memoria.

Sistemul învață de la sine construind un model statistic din gama existentă de cod sursă deschis publicată pe GitHub și în depozite publice similare. În etapa de instruire, sistemul determină șabloane tipice pentru a construi structuri în cod și a construi un arbore sintactic de conexiuni între aceste șabloane, reflectând fluxul de execuție a codului în program. Ca urmare, se formează un arbore de decizie de referință, care combină experiența de dezvoltare a tuturor textelor sursă analizate.

Pentru a face ControlFlag mai disponibil pentru comunitatea mai largă de dezvoltare de software, Intel are plăcerea de a anunța că ControlFlag este acum open source și poate fi accesat la https://github.com/IntelLabs/control-flag. Suntem încântați să oferim dezvoltatorilor oportunitatea de a dezvolta pe acesta și de a vedea ce se mai poate face cu această tehnologie extrem de valoroasă și inovatoare.

De la introducerea sa, ControlFlag a fost testat în software la nivel de producție și sisteme software open source utilizate pe scară largă. De exemplu, anul trecut, ControlFlag a identificat o anomalie de cod în Client URL (cURL), un proiect software pentru computer care transferă date folosind diferite protocoale de rețea de peste XNUMX miliard de ori pe zi. După ce au raportat anomalia echipei cURL, aceștia au fost de acord cu constatările ControlFlag și ulterior și-au corectat codul.

Un proces similar de definire a modelelor este efectuat pentru codul testat, care este comparat cu un arbore de decizie de referință. Discrepanțele mari cu ramurile adiacente indică o anomalie în modelul care se verifică. De asemenea, sistemul permite nu numai identificarea unei erori în șablon, ci și sugerarea unei soluții. De exemplu, atunci când analizați fragmentul de cod „dacă (x = 7) y = x;” sistemul a stabilit că construcția „variabilă == număr” este utilizată în general în declarația „dacă” pentru a compara valorile numerice, astfel încât indicația „variabilă = număr” din afirmația „dacă” este probabil cauzată de o eroare tipografică.

Analizoarele statice tradiționale ar detecta o astfel de eroare, dar, spre deosebire de ei, ControlFlag nu aplică reguli de tip out-of-the-box, în care este dificil să se prevadă toate opțiunile posibile, ci mai degrabă pleacă de la statisticile de utilizare a tuturor tipurilor. de construcţii.într-un număr mare de proiecte.

Ca experiment, când utilizați ControlFlag în codul sursă al utilitarului cURL, de multe ori este citat ca exemplu de analizoare statice dovedite, de înaltă calitate a dezvăluit o eroare neatenționată la utilizarea elementului de structură „s-> keepon”, care avea un tip numeric, dar a fost comparat cu valoarea booleană TRUE.

În codul OpenSSL, pe lângă problema menționată mai sus cu „(s1 == NULL) ∧ (s2 == NULL)”, au fost detectate și anomalii în expresiile „(-2 == rv)” care era cel puțin un greșeală de scriere.

De asemenea, este raportat că utilizarea ControlFlag a făcut posibilă identificarea a câteva sute de erori în software-ul proprietar nespecific, ducând la blocări și probleme de memorie.

În cele din urmă dacă sunteți interesat să aflați mai multe despre asta, puteți verifica detaliile În următorul link. În ceea ce privește cei care sunt interesați să poată vedea codul sursă, să îl obțină sau să îl cloneze într-un depozit, pot face acest lucru din următorul link.


Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: AB Internet Networks 2008 SL
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.