| CHAN (Clone History ANalyzer) |
|
CHAN (Clone History ANalyzer) は, 版管理システムに登録されているソースコードの情報から,コードクローンの履歴分析を行うシステムである.履歴分析は,現時点のコードクローンが過去のバージョンのどのコードクローンに対応するのか,現在存在するコードクローンがどのような変遷を辿ってきたのかを特定することを可能にします.
保守工程を阻害する大きな要因の一つとしてコードクローンの存在が指摘されており, これまでに様々なコードクローン検出システムが提案されてい
ます.これらのシステムにより効率的なコードクローン検出が実現されましたが,機械的な検出手法によってすべてのコードクローンを検出することは容易ではありません.例えば,コード片に対して細かな編集が積みかさなった結果, 本質的には依然として類似したコード片であるにもかかわらず,コードクローンとして検出されなくなる場合があります.
そこで,最新の状態のみならず過去のコピーが行われた時点の状態を考慮し,このようなコード片もコードクローンとして抽出する手法としてコードクローン履歴分析を提案し,その支援システムCHANを開発しました.
コードクローン履歴分析では,過去の時点のコードクローン分析を最新版の分析結果に反映させるために,過去の時点のコードクローンが現在,どの位置に存在しているかを分析します.なお,過去の時点のソースコードを得るためにCVS などの版管理システムを利用します.
コードクローン履歴分析手法によって抽出されたコードクローン履歴を効率的に閲覧するためにCHAN は二つの画面を用意しています.フォルダ単位のコードクローン量グラフ画面と,コードクローン履歴表示画面です.
コードクローン量グラフ画面では, 指定フォルダ以下のフォルダのコードクローン含有量・含有率を確認することができます.この画面を用いてソフトウェア内のどこにコードクローンが多く存在するか,どの時点でコードクローンが増加・減少しているかを俯瞰することができます.このような情報は,解析対象システムのなかでも重点的な解析が必要な場所を特定するために有用です.
コードクローン履歴表示画面では,コードクローンの履歴の詳細が描画されます.この画面の情報から,それぞれのコードクローンがいつ,誰に
よって追加,削除されたのか,どこからコピーされたものなのか,かつてクローン関係にあったコードがどれなのか,などの情報を容易に確認することができます.
CHAN の有用性を確認するために,PostgreSQL のリポジトリに含まれる約6 ヶ月間のソースコードの更新履歴データを用いて,コードクローンの履歴
関係を抽出し,分析を行いました.その結果,抽出したコードのクローン履歴関係をたどることでかつてクローンだったコード片が正しく抽出できることが確認されました.また,抽出したコード片は派生元のコード片と強い関連を持っていることも確認することが
できました.
|
|
主な関連文献
|
|
川口 真司,松下 誠,井上 克郎,“版管理システムを用いたクローン履歴分析手法の提案,” 電子情報通信学会論文誌,Vol.89-D,No.10,pp.2279-2287,October 2006.
|
|
|
Shinji Kawaguchi, Hajimu Iida, “Tracking Code Clone fot Software Traceability and Quality,” Proc. Workshop on Accountability and Traceability in Global Software Engineering (ATGSE 2007), pp.53-54, Nagoya, Japan, December 2007.
|
|
|
川口 真司,松下 誠,井上 克郎,“版管理システムを用いたコードクローン履歴分析,” 電子情報通信学会技術研究報告,SS2005-31,Vol.105,No.228,pp.43-48,August 2005.
|
|
|
川口 真司,松下 誠,井上 克郎,飯田 元,“コードクローン履歴閲覧環境を用いたクローン評価の試み,” 情報処理学会研究報告,2006-SE-154,Vol.2006,No.125,pp.49-56,November 2006.
|
|