Intel, koddaki hataları tespit etmek için bir makine öğrenme sistemi olan ControlFlag'ın kaynak kodunu yayınladı

Intel tanıtıldı bir reklam aracılığıyla ControlFlag araştırma projesi ile ilgili gelişmeler, kodun kalitesini artırmak için bir makine öğrenimi sistemi oluşturmayı amaçlamaktadır.

Araç, MIT lisansı altında piyasaya sürüldü ve mevcut çok sayıda kod üzerinde eğitilmiş bir modele dayalı olarak, C/C++ gibi üst düzey dillerde yazılmış kaynak metinlerdeki çeşitli hata ve anormalliklerin tespit edilmesine olanak sağlamasıyla öne çıkmaktadır.

Sistem kodunuzdaki çeşitli sorun türlerini tespit etmek için uygundur, yazım hatalarını ve yanlış tür kombinasyonlarını tespit etmekten, işaretçilerdeki boş değerler için eksik kontrolleri ve bellekle ilgili sorunları belirlemeye kadar.

Sistem istatistiksel bir model oluşturarak kendi kendine öğrenir GitHub ve benzer halka açık depolarda yayınlanan mevcut açık kaynak kod dizisinden. Eğitim aşamasında sistem tipik şablonları belirler. kodda yapılar oluşturmak ve bu şablonlar arasında programdaki kod yürütme akışını yansıtan sözdizimsel bir bağlantı ağacı oluşturmak için. Sonuç olarak, analiz edilen tüm kaynak metinlerin geliştirme deneyimlerini birleştiren bir referans karar ağacı oluşturulur.

ControlFlag'ı daha geniş yazılım geliştirme topluluğu için daha erişilebilir kılmak için Intel, ControlFlag'ın artık açık kaynak olduğunu ve https://github.com/IntelLabs/control-flag adresinden erişilebilir olduğunu duyurmaktan memnuniyet duyar. Geliştiricilere üzerinde geliştirme ve bu son derece değerli ve yenilikçi teknoloji ile başka neler yapılabileceğini görme fırsatı vermekten memnuniyet duyuyoruz.

ControlFlag, piyasaya sunulduğundan bu yana üretim düzeyinde yazılımlarda ve yaygın olarak kullanılan açık kaynaklı yazılım sistemlerinde test edilmiştir. Örneğin, geçen yıl ControlFlag, çeşitli ağ protokollerini kullanarak günde XNUMX milyardan fazla veri aktaran bir bilgisayar yazılımı projesi olan İstemci URL'sinde (cURL) bir kod anormalliği tespit etti. Anomaliyi cURL ekibine bildirdikten sonra, ControlFlag'ın bulgularını kabul ettiler ve ardından kodlarını yamaladılar.

Test edilen kod için benzer bir kalıp tanımlama süreci gerçekleştirilir., bir referans karar ağacıyla karşılaştırılır. Bitişik dallarla büyük tutarsızlıklar, doğrulanmakta olan modelde bir anormallik olduğunu gösterir. Sistem ayrıca sadece şablondaki bir hatayı tanımlamaya değil, aynı zamanda bir çözüm önermeye de izin verir. Örneğin, kod parçacığını ayrıştırırken "if (x = 7) y = x;" sistem, sayısal değerleri karşılaştırmak için "if" ifadesinde genellikle "değişken == sayı" yapısının kullanıldığını belirlemiştir, bu nedenle "if" ifadesindeki "değişken = sayı" gösterimi muhtemelen bir yazım hatasından kaynaklanmaktadır.

Geleneksel statik analizörler böyle bir hatayı tespit eder, ancak onlardan farklı olarak ControlFlag, olası tüm seçenekleri öngörmenin zor olduğu, kullanıma hazır kurallar uygulamaz, bunun yerine her türlü kullanım istatistiklerinden başlar. çok sayıda projede.

Bir deney olarak, cURL yardımcı programının kaynak kodunda ControlFlag kullanırken, sıklıkla örnek olarak gösteriliyor kanıtlanmış, yüksek kaliteli kod, statik analizörler "s-> keepon" yapı öğesini kullanırken yanlışlıkla bir hata ortaya çıkardı, sayısal bir türe sahipti, ancak TRUE boole değeriyle karşılaştırıldı.

OpenSSL kodunda, yukarıda "(s1 == NULL) ∧ (s2 == NULL)" ile bahsedilen soruna ek olarak, en az bir olan "(-2 == rv)" ifadelerinde de anormallikler tespit edildi. yazım hatası

Ayrıca, ControlFlag kullanımının, belirli olmayan tescilli yazılımlarda çökmelere ve bellek sorunlarına yol açan birkaç yüz hatayı tespit etmeyi mümkün kıldığı da bildirilmektedir.

Nihayet onun hakkında daha fazla bilgi edinmekle ilgileniyorsanayrıntıları kontrol edebilirsiniz Aşağıdaki bağlantıda. Kaynak kodunu görmek, elde etmek veya bir depoda klonlamak isteyenler ise, bunu şu adresten yapabilirler: aşağıdaki bağlantı.


Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: AB Internet Networks 2008 SL
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.