Intel merilis kode sumber ControlFlag sistem pembelajaran mesin untuk mendeteksi kesalahan dalam kode

Intel meluncurkan melalui iklan perkembangan yang terkait dengan proyek penelitian ControlFlag, yang dimaksudkan untuk membuat sistem pembelajaran mesin untuk meningkatkan kualitas kode.

Alat ini telah dirilis di bawah lisensi MIT dan menonjol karena memungkinkan, berdasarkan model yang dilatih pada sejumlah besar kode yang ada, untuk mengidentifikasi berbagai kesalahan dan anomali dalam teks sumber yang ditulis dalam bahasa tingkat tinggi seperti C / C ++.

Sistem sangat cocok untuk mendeteksi berbagai jenis masalah dalam kode Anda, dari mendeteksi kesalahan ketik dan kombinasi tipe yang salah, hingga mengidentifikasi pemeriksaan yang hilang untuk nilai nol pada pointer dan masalah dengan memori.

Sistem belajar dengan sendirinya dengan membangun model statistik dari larik kode sumber terbuka yang ada yang diterbitkan di GitHub dan repositori publik serupa. Pada tahap pelatihan, sistem menentukan template tipikal untuk membangun struktur dalam kode dan membangun pohon sintaksis koneksi antara template ini, yang mencerminkan aliran eksekusi kode dalam program. Akibatnya, pohon keputusan referensi terbentuk, yang menggabungkan pengalaman pengembangan semua teks sumber yang dianalisis.

Untuk membuat ControlFlag lebih tersedia untuk komunitas pengembangan perangkat lunak yang lebih luas, Intel dengan bangga mengumumkan bahwa ControlFlag sekarang open source dan dapat diakses di https://github.com/IntelLabs/control-flag. Kami senang memberi pengembang kesempatan untuk mengembangkannya dan melihat apa lagi yang bisa dilakukan dengan teknologi yang sangat berharga dan inovatif ini.

Sejak diperkenalkan, ControlFlag telah diuji dalam perangkat lunak tingkat produksi dan sistem perangkat lunak sumber terbuka yang banyak digunakan. Misalnya, tahun lalu, ControlFlag mengidentifikasi anomali kode di URL Klien (cURL), sebuah proyek perangkat lunak komputer yang mentransfer data menggunakan berbagai protokol jaringan lebih dari XNUMX miliar kali sehari. Setelah melaporkan anomali ke tim cURL, mereka setuju dengan temuan ControlFlag dan kemudian menambal kode mereka.

Proses serupa untuk mendefinisikan pola dilakukan untuk kode yang sedang diuji, yang dibandingkan dengan pohon keputusan referensi. Perbedaan besar dengan cabang yang berdekatan menunjukkan anomali dalam pola yang sedang diverifikasi. Sistem ini juga memungkinkan tidak hanya untuk mengidentifikasi kesalahan dalam template, tetapi juga untuk menyarankan solusi. Misalnya, saat mengurai cuplikan kode "if (x = 7) y = x;" sistem telah menentukan bahwa konstruksi "variabel == angka" umumnya digunakan dalam pernyataan "jika" untuk membandingkan nilai numerik, sehingga indikasi "variabel = angka" dalam pernyataan "jika" mungkin disebabkan oleh kesalahan ketik.

Penganalisis statis tradisional akan mendeteksi kesalahan seperti itu, tetapi, tidak seperti mereka, ControlFlag tidak menerapkan aturan out-of-the-box, di mana sulit untuk memperkirakan semua opsi yang mungkin, melainkan mulai dari statistik penggunaan semua jenis konstruksi dalam sejumlah besar proyek.

Sebagai percobaan, saat menggunakan ControlFlag dalam kode sumber utilitas cURL, sering dikutip sebagai contoh dari kode yang terbukti, berkualitas tinggi, penganalisa statis mengungkapkan bug yang tidak disengaja saat menggunakan elemen struktur "s-> keepon", yang memiliki tipe numerik, tetapi dibandingkan dengan nilai boolean TRUE.

Dalam kode OpenSSL, selain masalah yang disebutkan di atas dengan "(s1 == NULL) (s2 == NULL)", anomali juga terdeteksi dalam ekspresi "(-2 == rv)" yang setidaknya merupakan salah ketik.

Dilaporkan juga bahwa penggunaan ControlFlag memungkinkan untuk mengidentifikasi beberapa ratus bug dalam perangkat lunak berpemilik non-spesifik, yang menyebabkan crash dan masalah memori.

Akhirnya jika Anda tertarik untuk mengetahui lebih banyak tentangnya, Anda dapat memeriksa detailnya Di tautan berikut. Adapun bagi yang tertarik untuk melihat source codenya, mendapatkannya atau mengkloningnya di dalam repositori, bisa melakukannya dari link berikut.


tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Bertanggung jawab atas data: AB Internet Networks 2008 SL
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.