本研究の目的は,識別子名の類似性に基づくコードクローン検出ツールを開発し,有効性の評価を行うことである. 本ツールは,単純に同一の識別子名を含むコード片をコードクローンとして検出するだけではなく,類似した用いられ方をしている識別子名を含むコード片もコードクローンとして検出する. その理由は,類似した用いられ方をする識別子であっても,開発者によって異なる名前が付けられることがあるため,類似した用いられ方をしている識別子名を等価であると見なした方が,類似した機能を持つコード片をコードクローンとして検出しやすいと考えられるからである.コード片が類似した用いられ方をしている識別子名を含むかどうかを判定するためには,自然言語処理の分野で提案されているトピック抽出技術を用いる.具体的には,2つのコード片間で共通するトピックが占める割合が大きいなら,それらコード片をコードクローンと判定する. 有効性の評価では,本ツールがコードクローンとして検出したコード片が既存のコードクローン検出ツールで検出されるか,および本ツールが検出したクローンセット(コードクローンの同値類)を提示したとき保守作業を行う開発者を支援できるかを評価した.さらに,既存のコードクローン検出ツールと比較して,本ツールのスケーラビリティ(検出時間やメモリ消費量)は高いかも評価した.既存のコードクローン検出手法のほとんどはコンパイラで使用されている字句解析や構文解析 に基づくものである.よって,自然言語処理に基づく本手法は,新しい分類のコードクローン検出手法と言える.
|