Similar
or identical code portions which are generated by copying and reusing code
portions within the source code are named as code clones. While so many works
have been conducted to detect these clones, they generally use string
comparison techniques and very few of them take advantage of popular learning
based approaches, such as deep learning. This paper proposes a new approach
based on a popular and successful image classification technique named as
convolutional neural network. It simply tokenizes each candidate clone pair in
order to generate image files. Then, convolutional neural network is used to
classify these image data with labels “clone” and “not clone”. In order to train and test the network, clone
and not clone pairs are chosen from a public database including six million
methods. As a result, the approach gives 99% accuracy, effectively detects
clones and not clones with 2-5% false alarms rates at method granularity.
code clone detection deep learning convolutional neural network
Yazılım
geliştirirken kopyalama ve yeniden kullanma yoluyla oluşturulan benzer veya
aynı kod parçaları, kod klonları olarak adlandırılır. Bu klonları tespit etmek
için pek çok çalışma yapılmış olsa da, çalışmalar genellikle katar
karşılaştırma tekniklerini kullanılmakta ve çok azı popüler araştırma
alanlarından olan derin öğrenmeden faydalanmaktadır. Bu makale, konvolüsyonel
sinir ağı olarak adlandırılan, popüler ve başarılı görüntü sınıflandırma
yöntemine dayanan yeni bir yaklaşım önermektedir. Bu yöntem, görüntü
dosyalarını oluşturmak için her aday klon çiftini sembollere ayırır. Daha
sonra, konvolüsyonel sinir ağı bu görüntü verilerini “klon” veya “klon değil”
etiketleriyle sınıflandırmak için kullanılır. Ağı eğitmek ve test etmek için
altı milyon java metodu içeren bir veri tabanından örneklerler seçilerek
kullanılmıştır. Sonuç olarak, bu
yaklaşım metot bazındaki klonları % 95'lik bir doğrulukla etkili bir şekilde
tespit etmektedir.
Birincil Dil | İngilizce |
---|---|
Konular | Bilgisayar Yazılımı |
Bölüm | Makaleler |
Yazarlar | |
Yayımlanma Tarihi | 31 Ocak 2020 |
Gönderilme Tarihi | 18 Mart 2019 |
Yayımlandığı Sayı | Yıl 2020 |