Ngaleupaskeun ControlFlag 1.0, alat pikeun ngaidentipikasi kasalahan dina kode C

Intel parantos nyebarkeun sékrési utama munggaran alat ControlFlag 1.0, anu ngamungkinkeun anjeun pikeun ngaidentipikasi kasalahan sareng anomali dina kode sumber nganggo sistem pembelajaran mesin anu dilatih dina sajumlah ageung kode anu aya. Teu kawas analyzers statik tradisional, ControlFlag teu nerapkeun aturan siap-dijieun, nu hese nyadiakeun sagala pilihan mungkin, tapi dumasar kana statistik dina pamakéan rupa-rupa constructs basa dina angka nu gede ngarupakeun proyék aya. Kode ControlFlag ditulis dina C ++ sarta open sourced handapeun lisénsi MIT.

Sistem ieu dilatih ku ngawangun modél statistik tina susunan kode anu aya pikeun proyék open-source anu diterbitkeun dina GitHub sareng repositori umum anu sami. Dina tahap latihan, sistem nangtukeun pola has pikeun ngawangun struktur dina kode jeung ngawangun tangkal sintaksis sambungan antara pola ieu, reflecting aliran palaksanaan kode dina program. Hasilna, kabentuk tangkal rujukan-nyieun kaputusan anu ngagabungkeun pangalaman ngembangkeun sakabeh kode sumber dianalisis. Kodeu anu ditinjau ngalaman prosés anu sami pikeun ngaidentipikasi pola anu dipariksa ngalawan tangkal kaputusan rujukan. Beda ageung sareng dahan tatangga nunjukkeun ayana anomali dina pola anu dipariksa.

Ngaleupaskeun ControlFlag 1.0, alat pikeun ngaidentipikasi kasalahan dina kode C

Salaku conto kamampuan ControlFlag, pamekar nganalisis kodeu sumber proyék OpenSSL sareng cURL:

  • Anomali constructs "(s1 == NULL) ∧ (s2 == NULL)" jeung "(s1 == NULL) | (s2 == NULL)" , nu teu cocog jeung pola ilahar dipaké "(s1 == NULL) || (s2 == NULL)". Kodeu ogé ngaidentipikasi anomali dina éksprési "(-2 == rv)" (minusna nyaéta typo) sareng "BIO_puts (bp, ":") <= 0)" (dina kontéks mariksa parantosan suksés. fungsina kedahna "== 0").
  • Dina cURL, kasalahan kapanggih anu henteu dideteksi ku analisa statik nalika nganggo unsur struktur "s-> keepon", anu ngagaduhan jinis numerik, tapi dibandingkeun sareng nilai boolean BENER.

Diantara fitur versi ControlFlag 1.0, aya dukungan pinuh pikeun témplat standar pikeun basa C sareng kamampuan pikeun ngadeteksi anomali dina ekspresi "lamun" kondisional. Contona, nalika nganalisis fragmen kode "lamun (x = 7) y = x;" Sistem bakal nangtukeun yén pernyataan "lamun" biasana ngagunakeun konstruksi "variabel == angka" pikeun ngabandingkeun nilai numerik, jadi eta kamungkinan pisan yén "variabel = angka" dina ekspresi "lamun" disababkeun ku typo a. Kit kalebet skrip anu ngamungkinkeun anjeun ngaunduh répositori basa C anu aya dina GitHub sareng dianggo pikeun ngawangun modél. Modél siap-dijieun ogé sayogi, ngamungkinkeun anjeun langsung ngamimitian mariksa kodeu.

sumber: opennet.ru

Tambahkeun komentar