大規模データセットを対象とするメソッド単位でのコードクローン検出
卒業論文, 大阪大学
概要: ソフトウェアシステムには,他のソフトウェアにまたがるコードクローンが多数存在すると予測されている.このようなコードクローンを検出することは,ライセンスに違反して流用されているソースコードの発見,また複数のソフトウェア間に存在する共通処理のライブラリ化などの観点から有益である.しかし,既存のコードクローン検出手法では細粒度で検出を行っているため,大規模なソフトウェア群を対象として検出を行う場合は非常に大きなコストを必要とする.この問題点を解決するために,ファイル単位でコードクローンを検出するという手法が提案されているが,この手法にはファイルの一部がコードクローンになっているものは検出できないという欠点が存在する.
本研究では既存研究の問題点を解決するため,メソッド単位でコードクローンを検出する手法を提案する.メソッド単位でのコードクローン検出は,ファイル単位のコードクローン検出手法と同様に,大規模なソフトウェア群を対象とした場合でも実用的なコストで検出を行うことが可能であり,かつファイル単位の検出手法では検出することができないコードクローンを検出できる.
提案手法を実装し,約1万3千のソフトウェアから構成される大規模ソフトウェア群に対して適用実験を行った.その結果,約3億6千万行のソースコードに対して4.91時間で検出処理が完了した.また,検出されたコードクローンを分析したところ,検出されたコードクローンの約40%が,ファイル単位の検出手法ではコードクローンとして検出できないものであるという結果が得られた.さらに検出されたコードクローンを含むファイルの約27%が,ファイル単位のコードクローン検出手法ではコードクローンを含んでいると認識できないファイルであることが確認された.
タグ: code, clone, method, clone, source, code, plagiarism, software, maintenance
@mastersthesis{石原知也2012,
author = {石原 知也},
title = {大規模データセットを対象とするメソッド単位でのコードクローン検出},
school = {大阪大学},
type = {Bachelor's Thesis},
year = {2012},
month = {feb}
}