DeepCode menghadirkan ulasan kode yang didukung AI ke C dan C ++

DeepCode, layanan cloud yang menggunakan pembelajaran mesin untuk menganalisis basis kode untuk kelemahan keamanan dan potensi bug, sekarang dapat menganalisis kode C dan C ++.

Dilatih dengan menganalisis ribuan proyek sumber terbuka, DeepCode memberikan umpan balik untuk proyek di platform hosting kode atau repositori lokal. Pembuat DeepCode mengklaim bahwa ia memberikan umpan balik yang lebih baik dan lebih rinci daripada alat analisis kode tradisional karena ia menganalisis kode dalam konteks — tidak hanya sebagai teks, tetapi sebagai perangkat lunak yang sedang berjalan.

Sebagian besar kerentanan yang ditemukan di perangkat lunak muncul di basis kode C atau C ++. Sekuat kedua bahasa tersebut, mereka memberikan sedikit atau tanpa perlindungan terhadap kesalahan pengembang, dan versi yang lebih baru dari bahasa ini dipaksa untuk mempertahankan kompatibilitas ke belakang dan karenanya tetap rentan. 

Basis pengetahuan masalah DeepCode mencakup banyak masalah umum yang ditemukan di C dan C ++ serta bahasa lain: masalah gaya, kebocoran sumber daya, masalah alokasi memori, masalah penanganan tanggal, dan ketidakcocokan di berbagai versi bahasa.

Dalam analisis kernel Linux, DeepCode menemukan sejumlah masalah umum dalam basis kode C termasuk parameter tidak tersanitasi yang diteruskan dari argumen baris perintah atau variabel lingkungan, masalah penggunaan setelah bebas, dan pemeriksaan yang hilang untuk pointer nol. Masalah lain dalam kode C lebih halus, seperti pembuatan file sementara yang tidak aman, atau kemungkinan bahwa instruksi tertentu mungkin dioptimalkan dalam kompilasi dan tidak memiliki efek yang diinginkan.

Saat pertama kali diluncurkan, DeepCode mendukung Java, JavaScript, TypeScript, dan Python, tetapi rencananya sudah tersedia untuk C, C ++, dan bahasa lainnya. Menurut posting blog yang mengumumkan dukungan C / C ++, menambahkan analisis kode untuk C dan C ++ membutuhkan waktu tiga bulan kerja, karena kerumitan yang melibatkan fitur tingkat rendah C / C ++.