Rilis ControlFlag 1.0, alat kanggo ngenali kesalahan ing kode C

Intel wis nerbitake release utama pisanan saka alat ControlFlag 1.0, sing ngijini sampeyan kanggo ngenali kasalahan lan anomali ing kode sumber nggunakake sistem learning machine dilatih ing jumlah gedhe saka kode ana. Ora kaya penganalisa statis tradisional, ControlFlag ora ngetrapake aturan sing wis siap, sing angel nyedhiyakake kabeh pilihan sing bisa, nanging adhedhasar statistik babagan panggunaan macem-macem konstruksi basa ing pirang-pirang proyek sing wis ana. Kode ControlFlag ditulis ing C ++ lan mbukak sumber ing lisensi MIT.

Sistem kasebut dilatih kanthi mbangun model statistik saka susunan kode proyek open-source sing wis ana sing diterbitake ing GitHub lan repositori umum sing padha. Ing tahap latihan, sistem nemtokake pola khas kanggo mbangun struktur ing kode lan mbangun wit sintaksis sambungan antarane pola kasebut, nggambarake aliran eksekusi kode ing program kasebut. AkibatΓ©, wit nggawe keputusan referensi dibentuk sing nggabungake pengalaman pangembangan kabeh kode sumber sing dianalisis. Kode sing ditinjau ngalami proses sing padha kanggo ngenali pola sing dicenthang ing wit keputusan referensi. Beda gedhe karo cabang tetanggan nuduhake ananΓ© anomali ing pola sing dicenthang.

Rilis ControlFlag 1.0, alat kanggo ngenali kesalahan ing kode C

Minangka conto kapabilitas ControlFlag, pangembang nganalisis kode sumber proyek OpenSSL lan cURL:

  • Konstruksi anomali "(s1 == NULL) ∧ (s2 == NULL)" lan "(s1 == NULL) | (s2 == NULL)" , sing ora cocog karo pola sing umum digunakake "(s1 == NULL) || (s2 == NULL)". Kode kasebut uga nemtokake anomali ing ekspresi "(-2 == rv)" (minus ana kesalahan ketik) lan "BIO_puts(bp, ":") <= 0)" (ing konteks mriksa kasil ngrampungake fungsi kasebut kudu "== 0").
  • Ing cURL, kesalahan ditemokake sing ora dideteksi dening analisa statis nalika nggunakake unsur struktur "s-> keepon", sing nduweni jinis numerik, nanging dibandhingake karo nilai boolean TRUE.

Ing antarane fitur versi ControlFlag 1.0, ana dhukungan lengkap kanggo template standar kanggo basa C lan kemampuan kanggo ndeteksi anomali ing ekspresi "yen" kondisional. Contone, nalika nganalisa fragmen kode "yen (x = 7) y = x;" Sistem bakal nemtokake manawa statement "yen" biasane nggunakake konstruksi "variabel == nomer" kanggo mbandhingake nilai numerik, saengga kemungkinan "variabel = nomer" ing ekspresi "yen" disebabake kesalahan ketik. Kit kalebu skrip sing ngidini sampeyan ndownload repositori basa C sing ana ing GitHub lan digunakake kanggo mbangun model kasebut. Model siap digawe uga kasedhiya, ngidini sampeyan langsung mriksa kode kasebut.

Source: opennet.ru

Add a comment