ソースコード中の繰り返し部分に着目したコードクローン検出手法の実装
卒業論文, 大阪大学
概要: コードクローン(ソースコード中の同一あるいは類似するコード片) の存在は,あるコード片に修正すべき箇所が見つかった場合,そのコード片とコードクローン関係にあるすべてのコード片について同様の修正を検討しなければならないため,ソフトウェアの修正に要する作業量を増大させるおそれがあると考えられている.そのため,これまでに多くのコードクローン検出手法が提案され,コードクローンを自動的に検出するツールが多数開発されている.しかし,既存の検出手法にはソースコード中で同じ文が繰り返し記述された箇所(以下,繰り返し部分と呼ぶ)において,小さなコードクローンが多く検出されるという問題点がある.そのようなコードクローンの検出はソフトウェア保守の観点において,必ずしも有益ではない.その理由は2 つある.1 つ目は,繰り返し部分はプログラミング言語の性質上コードクローンとして検出されやすいからである.例えば,連続した数宣言はクラスや関数の先頭で行われることが多く,それゆえ,クラスや関数の先頭で繰返し部分が多くなる.よって,クラスや関数の先頭では小さなコードクローンが多く検出されやすくなるが,そのようなコードクローンは検出する必要がない.2 つ目は,繰り返し部分内の一部に対してリファクタリングなどの保守作業を行うことはないからである.
本研究では既存手法の問題点を解決するため,繰り返し部分を折りたたむという前処理を提案する.繰り返し部分を折りたたむことで,着目する必要のない冗長なコードクローンの検出を抑止するとともに,把握すべきコードクローンが検出できるようになる.さらに,提案手法を用いたコードクローン検出ツールを作成し,複数のオープンソースソフトウェアに対して,折りたたみを行う場合と行わない場合の2 通りの検出を行った.その結果,折りたたみを行うことで繰り返し部分の検出数が減少したことを確認した.特に繰り返し部分を多く含むソフトウェアに対しては,提案する折りたたみ機能が効果的に働いたため,検出数の大幅な減少に繋がった.
タグ: Code, Clone, Program, Analysis, Software, Maintenance
@mastersthesis{村上寛明2012,
author = {村上 寛明},
title = {ソースコード中の繰り返し部分に着目したコードクローン検出手法の実装},
school = {大阪大学},
type = {Bachelor's Thesis},
year = {2012},
month = {feb}
}