Yüksek LisansAçık Erişim

Soyut sözdizimi ağaçları ve derin öğrenme yöntemleriyle kod benzerliklerinin tespiti

Bu tez size mi ait?

Bu kayıt toplu arşivden geldi. Sizinse profilinize bağlayın.

2023
0 görüntülenme
0 i̇ndirme

Özet (TR)

Bu tez çalışmasının amacı, C# programlama dili baz alınarak kaynak koddaki benzerlikleri gösteren bir veriseti oluştup bu benzerliklerin tespiti ve iyileştirme gereken noktaları belirten sistemin tasarlarımının yapılmasıdır. Yazılım dünyasında, programların yapısını anlamak ve kod benzerliklerini tespit etmek, bir dizi önemli uygulama için hayati öneme sahiptir. Bu uygulamalar, kod klonlama tespiti, yazılım dolandırıcılığı izleme, ve yazılım kalitesi kontrolünü içerir. Bu bağlamda, Abstract Syntax Tree (AST) bazlı kod benzerlik analizi, bir dizi etkili çözüm sunmaktadır. AST, bir programın sözdizimsel yapısını hiyerarşik bir şekilde temsil eder. AST'ler, kodun daha derin anlamsal benzerliklerini belirlemek için kullanılabilir, çünkü onlar kodun yapısal özelliklerini ve ayrıntılarını ortaya çıkarır. Bu nedenle, AST bazlı analizler, kod benzerliklerini belirlemek için oldukça güçlü ve esnektir. Bu çalışmada, AST bazlı kod benzerlik analizinin temel prensiplerini, teknikleri ve uygulamaları incelenmiştir. Ayrıca, AST'lerin nasıl oluşturulduğu ve nasıl kullanıldığına dair detaylar ele alınmıştır ekleştirilen bu çalışmada, yapılmış olan diğer çalışmalardan farklı olarak sadece sınıf veya metot bazlı değil, kodun daha alt kırılımlarına inerek alt kırımlarının benzerliklerini tespit eden model ortaya konmuştur. Çeşitli metot ve araçlar ile geliştirilmiş olsa da sadece AST'leri içeren bir gömülü kütüphane (embedding vocabulary) olmadığı görülmüş ve bu yüzden de sadece ilgili AST'leri içeren bir kütüphane oluşturulmuştur. Daha çok yüz tanıma sistemlerinde uygulanan triplet loss derin öğrenme ağı yöntemleri kullanılarak kod benzerliği üzerindeki etkileri de incelenmektedir. Bu amaçla, benzer kod ve benzemeyen kod bloklarının AST'leri baz alınarak ilgili veri setleri oluşturularak triplet loss derin öğrenme ağı kullanılarak kod benzerliğinin tespiti için farklı bir yaklaşım ortaya konulmuştur. Ayrı bir uygulama ile sıralama algoritmalarından bazılarının kodları (Quick Sort, Bubble Sort v.b.) baz alınarak metot ve blok (if, for, while) bazlı AST'ler oluşturuldu. İlgili kod bloklarının satır aralıkları ve her bir AST satırının diğer AST satırlarıyla benzerlikleri çıkartılarak veri seti oluşturuldu. Bu kod benzerliklerinden en yüksek olanlar baz alınarak kosinüs benzerliği (cosine similarity) ve triplet loss yöntemleri ayrı ayrı uygulanarak benzerlikleri ölçüldüğünde sırasıyla %61,4 ve 88,68 doğruluk oranları sağlanmıştır. Geliştirilen model kod benzerliği ile ilgili günümüzde kullanılan araçlarla da karşılaştırılmıştır. Özellikle triplet loss kullanılarak sağlanan yüksek doğruluk oranı önerilen tekniğin pratik kullanılanımı konusunda önemli bir gelişme olarak değerlendirilmiştir.

Yazar

Necmettin Elmascı

Bu Yayına Nasıl Atıf Yapılır

Necmettin Elmascı (Yüksek Lisans Tezi). Soyut sözdizimi ağaçları ve derin öğrenme yöntemleriyle kod benzerliklerinin tespiti, 2023, Fatih Sultan Mehmet Foundation University .

Anahtar Kelimeler

Lisans

Tüm Hakları Saklıdır

Bu eser belirtilen lisans koşulları altında paylaşılmaktadır.

Fatih Sultan Mehmet Foundation University tezlerinden daha fazlası