Soyut sözdizimi ağaçları ve derin öğrenme yöntemleriyle kod benzerliklerinin tespiti
Detection of code similarities using abstract syntax trees and deep learning methods
- Tez No: 844117
- Danışmanlar: DR. ÖĞR. ÜYESİ ALİ NİZAM
- Tez Türü: Yüksek Lisans
- Konular: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol, Bilim ve Teknoloji, Computer Engineering and Computer Science and Control, Science and Technology
- Anahtar Kelimeler: Belirtilmemiş.
- Yıl: 2023
- Dil: Türkçe
- Üniversite: Fatih Sultan Mehmet Vakıf Üniversitesi
- Enstitü: Lisansüstü Eğitim Enstitüsü
- Ana Bilim Dalı: Bilgisayar Mühendisliği Ana Bilim Dalı
- Bilim Dalı: Belirtilmemiş.
- Sayfa Sayısı: 53
Özet
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.
Özet (Çeviri)
The aim of this thesis work is to design a system that creates a dataset indicating similarities in the source code based on the C# programming language, detects these similarities, and identifies points that need improvement. In the software world, understanding the structure of programs and detecting code similarities is of vital importance for a range of significant applications. These applications include code clone detection, software fraud monitoring, and software quality control. In this context, Abstract Syntax Tree (AST) based code similarity analysis offers a series of effective solutions. AST represents the syntactic structure of a program in a hierarchical way. ASTs can be used to determine the deeper semantic similarities of the code, as they reveal the structural features and details of the code. Therefore, AST-based analyses are powerful and flexible in determining code similarities. This study examines the basic principles, techniques, and applications of AST-based code similarity analysis. It also covers details on how ASTs are formed and used. In the work carried out, unlike other studies, a model detecting the similarities of sub-breakdowns of the code, not just based on classes or methods, has been put forward. Although it has been developed with various methods and tools, it was observed that there was no embedded library (embedding vocabulary) containing only ASTs, and therefore a vocabulary containing only relevant ASTs was created. The effects on code similarity are also examined by using triplet loss deep learning network methods, which are mostly applied on the similarities of images. For this purpose, a different approach has been introduced to detect code similarity using the triplet loss deep learning network by creating relevant data sets based on the ASTs of similar code and dissimilar code blocks. With a separate application, method, and block (if, for, while) based ASTs were created based on the codes of some sorting algorithms (Quick Sort, Bubble Sort, etc.). The line ranges of the relevant code blocks and the similarities of each AST line with other AST lines were extracted and a dataset was created. When the code similarities were measured with the cosine similarity method, based on the highest of these code similarities, an accuracy rate of 61.4% was achieved. The developed model was also compared with the tools used today for code similarity. The high accuracy rate achieved by using triplet loss has been evaluated as an important development in the practical use of the proposed technique.
Benzer Tezler
- Polinomlar için bir simgesel hesaplama çatısının tasarımı ve gerçeklenmesi
Design and implementation of a symbolic computation framework for polynomials
SEDA EFENDİOĞLU
Yüksek Lisans
Türkçe
2017
Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve KontrolKaradeniz Teknik ÜniversitesiBilgisayar Mühendisliği Ana Bilim Dalı
YRD. DOÇ. DR. HÜSEYİN PEHLİVAN
- Simgesel yaklaşımlarla logaritma ifadelerinin üretimi ve değerlendirilmesi
Production and evaluation of logarithmic expressions with symbolic approaches
MELİKE YÜKSEL
Yüksek Lisans
Türkçe
2024
Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve KontrolKaradeniz Teknik ÜniversitesiBilgisayar Mühendisliği Ana Bilim Dalı
DOÇ. DR. HÜSEYİN PEHLİVAN
- Pade yaklaşımının simgesel matematik yöntemleriyle uygulanması
Pade approximation application with symbolical mathematics methods
ESRA ERDEN
Yüksek Lisans
Türkçe
2024
Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve KontrolKaradeniz Teknik ÜniversitesiBilgisayar Mühendisliği Ana Bilim Dalı
DOÇ. DR. HÜSEYİN PEHLİVAN
- Simülasyon yazılımlarında kod klonları
Code clones in simulation software systems
MERVE ASTEKİN
Yüksek Lisans
Türkçe
2012
Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrolİstanbul Teknik ÜniversitesiBilgisayar Mühendisliği Ana Bilim Dalı
PROF. DR. MUHİTTİN GÖKMEN
- Belirsiz integral problemlerinin çözümü için genel bir yorumlayıcının simgesel hesaplama yaklaşımları kullanılarak tasarımı ve gerçeklenmesi
Design and implementation of a general interpreter for solution of indefinite integral problems by using symbolic computation approaches
CEYHAN YILMAZ
Yüksek Lisans
Türkçe
2019
Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve KontrolKaradeniz Teknik ÜniversitesiBilgisayar Mühendisliği Ana Bilim Dalı
DR. ÖĞR. ÜYESİ HÜSEYİN PEHLİVAN