Skip to main content
QUICK REVIEW

[論文レビュー] SourcererCC: Scaling Code Clone Detection to Big Code

Hitesh Sajnani, Vaibhav Saini|arXiv (Cornell University)|Dec 20, 2015
Software Engineering Research参考文献 41被引用数 294
ひとこと要約

SourcererCC は、最適化された逆引きインデックスとトークン順序ヒューリスティクスを用いて、大規模なプロジェクト間リポジトリにおける正確なおよびニアミス(Type-3)コードクローンをスケーラブルに検出するトークンベースのクローン検出ツールである。1台のワークステーションで 2.5 億行のコードを処理し、一般用途のクローン検出においてスケーラビリティと正確性の面で既存のツールを上回る高い再現率と正確度を達成した。

ABSTRACT

Despite a decade of active research, there is a marked lack in clone detectors that scale to very large repositories of source code, in particular for detecting near-miss clones where significant editing activities may take place in the cloned code. We present SourcererCC, a token-based clone detector that targets three clone types, and exploits an index to achieve scalability to large inter-project repositories using a standard workstation. SourcererCC uses an optimized inverted-index to quickly query the potential clones of a given code block. Filtering heuristics based on token ordering are used to significantly reduce the size of the index, the number of code-block comparisons needed to detect the clones, as well as the number of required token-comparisons needed to judge a potential clone. We evaluate the scalability, execution time, recall and precision of SourcererCC, and compare it to four publicly available and state-of-the-art tools. To measure recall, we use two recent benchmarks, (1) a large benchmark of real clones, BigCloneBench, and (2) a Mutation/Injection-based framework of thousands of fine-grained artificial clones. We find SourcererCC has both high recall and precision, and is able to scale to a large inter-project repository (250MLOC) using a standard workstation.

研究の動機と目的

  • 大規模なプロジェクト間リポジトリに存在するニアミスクローンを処理できる、スケーラブルで正確なクローン検出ツールの不足に対処すること。
  • 分散コンピューティングを必要とせず、Type-3(ニアミス)クローンをサポートする汎用的なクローン検出ツールを開発すること。
  • 標準的なハードウェア上で効率的に動作させ、クラスタ構成の複雑さとコストを回避しながら、高い再現率と正確度を達成すること。
  • 研究者や開発者がソフトウェアメンテナンス、フォーク管理、大規模なコード分析において実用的に利用できるようにすること。

提案手法

  • SourcererCC は、コードブロックを袋(bag)としてのトークンで表現することで、Type-3 クローンに一般的な微細な構文的変更に強く耐性を持つ。
  • 任意のコードブロックに対して、潜在的なクローン候補を素早く照会できるように、トークンの部分的な逆引きインデックスを構築する。
  • トークン順序に基づくフィルターヒューリスティクスにより、インデックスサイズを削減し、多くの誤検出を初期段階で排除することで、完全なコードブロック比較を最小限に抑える。
  • トークン順序を用いて類似度の上界をリアルタイムで計算し、比較回数を減らしながら候補を却下または受容する。
  • 2 種類の実装バージョンを提供する:バッチ処理用の SourcererCC-B と、Eclipse におけるインタラクティブな IDE 結合用の SourcererCC-I。
  • プログラミング言語に依存しない設計となっており、配布を必要とせず、標準的なワークステーションへの導入が可能である。

実験結果

リサーチクエスチョン

  • RQ11台のマシンで動作するトークンベースのクローン検出システムは、スケールアップにおいて Type-3 クローンの検出で高い再現率と正確度を達成できるか?
  • RQ2SourcererCC のパフォーマンスは、スケーラビリティ、実行時間、再現率、正確度の観点で、最先端のツールと比較してどの程度優れているか?
  • RQ3トークン順序に基づくフィルターヒューリスティクスは、インデックスサイズと比較オーバーヘッドをどの程度削減できるか?
  • RQ4SourcererCC は分散インfraストラクチャを用いずに、大規模なプロジェクト間リポジトリ(例:2.5 億行)でクローン検出が可能か?

主な発見

  • SourcererCC は、標準的なワークステーションを用いて 2.5 億行のコードを含むプロジェクト間リポジトリ(IJaDataset-2.0)でクローン検出を実行し、4.5 日で分析を完了した。
  • BigCloneBench と、細粒度の人工的クローンを生成するためのミューテーション/インジェクションフレームワークの2つのベンチマークで、高い再現率を達成した。
  • 複数のクローン専門家による検証により、検出結果の整合性と信頼性が確認された。
  • 最適化されたインデックスは、18GB のソースコードに対してわずか 1.2GB のサイズに抑えられ、従来のインデックスベースのアプローチと比較して顕著な空間効率性を示した。
  • SourcererCC は、4 つの最先端ツールと比較して、再現率と正確度の両面で優れており、特に Type-3 クローンの検出において顕著な優位性を示した。
  • フィルターヒューリスティクスにより、必要なコードブロック比較回数とトークン比較回数が大幅に削減され、パフォーマンスが著しく向上した。

より良い研究を、今すぐ始めましょう

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。