本研究では、多様なプログラミング言語の普及に伴い、コードクローン検出器の言語拡張性が重要になっていることを述べている。多くの既存のコードクローン検出器は、対象言語のソースコードハンドラを修正する必要があり、専門知識と時間がかかるため、新しい言語をサポートするのが困難である。
そこで本研究では、ANTLR構文解析器を用いた多言語コードブロック抽出手法を提案し、最も多くの言語をサポートする多言語コードクローン検出器(MSCCD)を実装した。MSCCDは、ANTLR文法定義ファイルを提供するだけで新しい言語をサポートできる。
MSCCDの性能評価では、BigCloneBenchを用いてJava言語の recall と precision を測定し、既存の最先端ツールと比較した。その結果、MSCCDは平均的な性能を示しつつ、圧倒的に多くの言語をサポートしていることが分かった。
さらに、CodeNetデータベースを用いて、Java、C、C++、Pythonの4言語に対する多言語ベンチマークを提案した。この結果、同じ検出手法でも言語によって性能が大きく異なることが明らかになった。
全体として、MSCCDは検出性能と言語拡張性のバランスが最も良い検出器であるが、ANTLR生成パーサの性能改善や大規模変異クローンの検出などの課題が残されている。今後は、公式パーサの活用と多言語化の進展が重要だと考えられる。
他の言語に翻訳
原文コンテンツから
arxiv.org
深掘り質問