転置インデックスを用いた,スケーラブルで増分的なクローン検出手法を提案している論文.

2010年時点で,スケーラビリティと増分的検出の両方を兼ね備えたクローン検出手法は存在しなかった. そこで,著者らは転置インデックスを用いて,それら(とついでに分散処理性)を兼ね備えたクローン検出手法を提案している.

提案手法は,ファイルからインデックスを生成する処理と,インデックスからクローンを検出する処理でできている. インデックス生成では,各ファイルに対して,初めに変数名を潰したうえで1行1文の形式に変換し,与えられた行数分連続する行をまとめてハッシュ化する. この処理は他のファイルに影響を受けないため,分散して実行できる. また,ファイルの変更があった場合も,その前後の行に対してハッシュ化を実行しなおせば良いので,増分的な実行が可能である. クローン検出では,作成したインデックスに対して,連続して一致するハッシュ値を探す.

インデックス生成の際に,構文解析が必要なのでちょっと時間かかりそう. また,1行1文にすると文の構造が壊れることもありそう. 例えば下のように

if (hoge) { return a; }

if (hoge) {} return a;

は同じ変換結果になる. 計算量を真面目に解析してるのは良いと思った. 分散処理ができるのも良いと思った. 分散処理ができるとスケーラビリティが上がるのは当たり前では. 10年前の論文なので,最新の検出器と勝負すると負けそう. 昔の論文なのでしょうがないかも知れないが,precision/recallの評価をしてないのは微妙.