Intel mengeluarkan kod sumber ControlFlag sistem pembelajaran mesin untuk mengesan ralat dalam kod

Intel didedahkan melalui iklan perkembangan berkaitan projek penyelidikan ControlFlag, yang bertujuan untuk mencipta sistem pembelajaran mesin untuk meningkatkan kualiti kod.

Alat ini telah dikeluarkan di bawah lesen MIT dan ia menonjol kerana membenarkan, berdasarkan model yang dilatih pada sejumlah besar kod sedia ada, untuk mengenal pasti pelbagai ralat dan anomali dalam teks sumber yang ditulis dalam bahasa peringkat tinggi seperti C / C ++.

Sistem ini ia sesuai untuk mengesan pelbagai jenis masalah dalam kod anda, daripada mengesan ralat tipografi dan kombinasi jenis yang salah, kepada mengenal pasti semakan yang hilang untuk nilai nol dalam penunjuk dan masalah dengan ingatan.

Sistem belajar dengan sendirinya dengan membina model statistik daripada tatasusunan kod sumber terbuka sedia ada yang diterbitkan pada GitHub dan repositori awam yang serupa. Dalam peringkat latihan, sistem menentukan templat biasa untuk membina struktur dalam kod dan membina pokok sintaksis sambungan antara templat ini, mencerminkan aliran pelaksanaan kod dalam program. Akibatnya, pepohon keputusan rujukan terbentuk, yang menggabungkan pengalaman pembangunan semua teks sumber yang dianalisis.

Untuk menjadikan ControlFlag lebih tersedia kepada komuniti pembangunan perisian yang lebih luas, Intel dengan sukacitanya mengumumkan bahawa ControlFlag kini adalah sumber terbuka dan boleh diakses di https://github.com/IntelLabs/control-flag. Kami berbesar hati memberi peluang kepada pembangun untuk membangunkannya dan melihat apa lagi yang boleh dilakukan dengan teknologi yang sangat berharga dan inovatif ini.

Sejak diperkenalkan, ControlFlag telah diuji dalam perisian peringkat pengeluaran dan sistem perisian sumber terbuka yang digunakan secara meluas. Sebagai contoh, tahun lepas, ControlFlag mengenal pasti anomali kod dalam URL Pelanggan (cURL), projek perisian komputer yang memindahkan data menggunakan pelbagai protokol rangkaian lebih daripada XNUMX bilion kali sehari. Selepas melaporkan anomali kepada pasukan cURL, mereka bersetuju dengan penemuan ControlFlag dan kemudiannya menampal kod mereka.

Proses yang serupa untuk menentukan corak dilakukan untuk kod yang sedang diuji, yang dibandingkan dengan pokok keputusan rujukan. Percanggahan besar dengan cawangan bersebelahan menunjukkan anomali dalam corak yang sedang disahkan. Sistem ini juga membenarkan bukan sahaja untuk mengenal pasti ralat dalam templat, tetapi juga untuk mencadangkan penyelesaian. Contohnya, apabila menghuraikan coretan kod "jika (x = 7) y = x;" sistem telah menentukan bahawa pembinaan "pembolehubah == nombor" biasanya digunakan dalam pernyataan "jika" untuk membandingkan nilai berangka, jadi petunjuk "pembolehubah = nombor" dalam pernyataan "jika" mungkin disebabkan oleh ralat tipografi .

Penganalisis statik tradisional akan mengesan ralat sedemikian, tetapi, tidak seperti mereka, ControlFlag tidak menggunakan peraturan di luar kotak, di mana sukar untuk meramalkan semua pilihan yang mungkin, sebaliknya bermula dari statistik penggunaan semua jenis. pembinaan.dalam sejumlah besar projek.

Sebagai percubaan, apabila menggunakan ControlFlag dalam kod sumber utiliti cURL, yang sering dipetik sebagai contoh kod yang terbukti, berkualiti tinggi, penganalisis statik mendedahkan pepijat yang tidak disengajakan apabila menggunakan elemen struktur "s-> keepon", yang mempunyai jenis angka, tetapi dibandingkan dengan nilai boolean TRUE.

Dalam kod OpenSSL, sebagai tambahan kepada masalah yang disebutkan di atas dengan "(s1 == NULL) ∧ (s2 == NULL)", anomali juga dikesan dalam ungkapan "(-2 == rv)" yang sekurang-kurangnya salah taip .

Ia juga dilaporkan bahawa penggunaan ControlFlag membolehkan untuk mengenal pasti beberapa ratus pepijat dalam perisian proprietari bukan khusus, yang membawa kepada ranap dan masalah ingatan.

Akhirnya sekiranya anda berminat untuk mengetahui lebih lanjut mengenainya, anda boleh menyemak perinciannya Dalam pautan berikut. Bagi mereka yang berminat untuk melihat kod sumber, mendapatkannya atau mengklonkannya dalam repositori, mereka boleh melakukannya dari pautan berikut.


Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab untuk data: AB Internet Networks 2008 SL
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.