【論文メモ】<2022>コードクローン検索手法の調査
原論文:
自然文をクエリとしたコード検索手法
Leveraging usage similarity for effective retrieval of examples in code repositories
[2], 2010
Deep Code Search
[12], 2018
Deep Code Search | IEEE Conference Publication | IEEE Xplore
Sourcerer: mining and searching internet-scale software repositories
[25], 2009
コード片をクエリとしたコード検索手法
木構造の分析に基づくコードクローン検出技術
📗DECKARD: Scalable and Accurate Tree-Based Detection of Code Clones
[19], 2007
deckard.pdf (purdue.edu)
メモ: 入力ソースコードを解析木に変換。解析木の部分木を特徴ベクトルで表現する。特徴ベクトル間の類似度を求めることによってコードクローンの検出を行う。
deckard.pdf (purdue.edu)
メモ: 入力ソースコードを解析木に変換。解析木の部分木を特徴ベクトルで表現する。特徴ベクトル間の類似度を求めることによってコードクローンの検出を行う。
📕Instant code clone search
[23], 2010
Instant code clone search | Proceedings of the eighteenth ACM SIGSOFT international symposium on Foundations of software engineering
メモ: インデックス作成技術を改善することで正確かつ高速にコードクローンを検索する手法。
Instant code clone search | Proceedings of the eighteenth ACM SIGSOFT international symposium on Foundations of software engineering
メモ: インデックス作成技術を改善することで正確かつ高速にコードクローンを検索する手法。
📕The R*-tree: an efficient and robust access method for points and rectangles
[5], 1990
The R*-tree: an efficient and robust access method for points and rectangles | Proceedings of the 1990 ACM SIGMOD international conference on Management of data
メモ: 上記[23]の提案で使われている手法。
The R*-tree: an efficient and robust access method for points and rectangles | Proceedings of the 1990 ACM SIGMOD international conference on Management of data
メモ: 上記[23]の提案で使われている手法。
📕Query by example in large-scale code repositories
[3], 2015
Query by example in large-scale code repositories | IEEE Conference Publication | IEEE Xplore
メモ: 抽象構文木(AST)の類似度に基づいたコードクローン検索手法。
Query by example in large-scale code repositories | IEEE Conference Publication | IEEE Xplore
メモ: 抽象構文木(AST)の類似度に基づいたコードクローン検索手法。
📗Aroma: code recommendation via structural code search
[27], 2019
Aroma: code recommendation via structural code search (acm.org)
メモ: 解析木から抽出した特徴に基づいて構造的に類似するコードクローンを検索する手法。
Aroma: code recommendation via structural code search (acm.org)
メモ: 解析木から抽出した特徴に基づいて構造的に類似するコードクローンを検索する手法。
【論文メモ】<2019>Aroma: code recommendation via structural code search (ashitomi99.blogspot.com)
自然言語処理に基づくコードクローン検出技術
📗情報検索技術に基づく高速な関数クローン検出
[52], 2014
メモ:TF-IDF法を使用。ソースコード中の識別子や予約語に利用される単語に対して重みづけを行うことで関数を特徴ベクトルに変換。その特徴ベクトル間の類似度を求めることで関数単位のコードクローンを検出する。
📗類義語の特定に基づく類似コード片検索法
[53], 2009
📕Scalable code clone detection and search based on adaptive prefix filtering
[33], 2018
メモ:adaptive prefix filtering に基づいたコードクローン検索、コードクローン検出手法。
📕FaCoY – A Code-to-Code Search Engine
[22], 2018
メモ:タイプ4までのコードクローンを検索する手法。
📕SLAMPA: Recommending Code Snippets with Statistical Language Model
[56], 2018
メモ:深層学習に基づく統計的言語モデルを用いて類似ソースコードを推薦する手法。
📗Siamese: Scalable and Incremental Code Clone Search via Multiple Code Representations
[35], 2019
メモ:n-gramを用いて構文的に類似したメソッドを検索する手法。
[41]
[24]
[16]
深層学習を用いたコードクローン検出技術
📕DeepSim: deep learning code functional similarity
[55], 2018
メモ:制御フローグラフとデータフローグラフのベクトル表現をもとに、深層学習モデルを用いた手法
📗Code-to-Code Search Based on Deep Neural Network and Code Mutation
[9], 2019
メモ:順伝播型ニューラルネットワークを用いた手法
📗InferCode: Self-Supervised Learning of Code Representations by Predicting Subtrees
[7], 2021
メモ:自然言語処理の自己教師あり学習アイディアをASTに適用したソースコード表現のモデル
Convolutional Neural Networks over Tree Structures for Programming Language Processing
[32], 2016
メモ:
[43], 2015
[37], 2009
今後の課題
多様なプログラミング言語へ対応できるコードクローン検索手法の開発:
・これまでのコードクローン検索手法は、主にJavaで開発されたソースコードを検索対象としている。
・言語間のコードクローン検索や、多様なプログラミング言語に対応可能なコードクローン検索技術が必要。
深層学習モデルのためのデータセット構築および改善手法の提案:
・近年、深層学習モデルを用いたコードクローン検索が注目されている。
・深層学習モデルの精度向上のために、データセット構築方法や改善手法の提案が必要。
コードクローン検索手法の性能比較調査:
・コードクローン検索手法間の性能比較が行われていない。
グラフ表現に基づいたコードクローン検索手法の提案:
・コードクローン検出と異なり、コードクローン検索ではグラフ表現に基づいた手法があまりない。コードクローン検索では入力に「構文的に不完全なコード片」が使われることが考えられるため。
・ただ、コードクローン検索の入力を「構文的に完全なコード片のみ」に想定することで、コードクローン検出で使われているプログラム依存グラフなどを用いて検索できるようになる可能性がある。
検索結果コード片の有効性に関する評価:
・既存研究では提案手法の評価を、ランキング、分類、検索時間に属する評価指標が用いられていた。
・ただ、提案手法において「品質の低いコード片」が検索されることで、そのコード片が開発タスクに用いられた場合、ソフトウェアの品質や開発の生産性を低下させる可能性が高くなる。
・そこで、有効なコードクローンが検索されたかを評価する必要がある。
■関連論文:
How Can I Use This Method?
[31], 2015
メモ:再利用性メトリクス
Improving Code Readability Models with Textual Features
[42], 2016
メモ:可読性メトリクス
その他サーベイ論文
[30], 2020
メモ:クローンリファクタリングと追跡に関する文献調査。クローンリファクタリングと追跡のための品質評価特徴に基づいた既存ツールの比較。
[4], 2015
メモ:コードクローン可視化文献に関するサーベイ。
[14], 2020
メモ:コードクローン可視化手法のシステマティックマッピング。
[17], 2014
メモ:コードクローン管理支援技術文献のサーベイ。
[6], 2020
メモ:リアルタイムコードクローン管理ツールの文献に関するレビュー。
[34], 2013
メモ:コードクローンの進化に関する文献のレビュー。
[39], 2007
メモ:コードクローン検出技術とツールのサーベイ。
[15], 2008
メモ:コードクローンの検出とその関連技術の成果。
[38], 2009
メモ:コードクローン検出技術とツールの包括的な調査。
[36], 2013
メモ:コードクローン検出文献に関する体系的レビュー。
📕Various Code Clone Detection Techniques and Tools: A Comprehensive Survey
[11], 2016
📗A Survey of Software Clone Detection Techniques
[45], 2016
📕A Survey on Code Clone, Its Behavior and Applications
[13], 2018
📗A Systematic Review on Code Clone Detection
[1], 2019
📗Study of Clone Code Detection Method
[50], 2019
📗Survey on Software Clone Detection Research
[28], 2019
📕Code Clone Detection Using Machine Learning Techniques: A Systematic Literature Review
[21], 2020
メモ:機械学習に基づくコードクローン検出手法の文献調査。
[54], 2021
メモ:脆弱性を含むコードの解析に基づくコードクローン検出手法の文献調査。
コメント
コメントを投稿