クローン履歴を利用した クローン分析環境 川口真司 松下誠 井上克郎 大阪大学大学院情報科学研究科 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 発表の概要 クローン履歴分析 クローンの過去を追跡 クローン履歴分析の応用 書き換える場所の発見 書き換える場所の理解促進 2005/08/04 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 2 コードクローン コードクローン(あるいは単に クローン) 類似文字列が存在するコー ド片 クローンの位置は (ファイル名、 開始行番号、終了行番号) で指定 クローンペア クローンA-1 とクローンA-2 が 類似文字列であるときに、こ れらをクローンペアとよぶ Clone A-1 Clone A-3 Clone A-2 Clone B-2 Clone B-1 クローンセット クローンペア関係において推 移関係が成り立つクローンの 集合 2005/08/04 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 3 クローン履歴 1. ひとつのクローンセットを クローン発生時期から分類 Clone A-3 追加 Clone A-1 Clone A-1 Clone B-1 Clone B-1 Clone A-3 Clone A-1 Clone B-1 Clone A-3 Clone A-4 Clone A-4, A-5 追加 Clone A-2 Clone B-2 Clone B-3 Clone A-2 Clone B-5 Clone B-4 Clone B-2 Clone B’-3 Clone A-2 Clone B’-2 Clone B’-1 Clone B-3, B-4, B-5 が編集 されて別クローンセットに 3.コード中に含まれるコード クローンの変化を分析 Clone B’-2 Clone B-2 Clone B’-3 Clone A-5 Clone B’-1 Clone B’-3 削除 2.過去に同じクローンセットだった クローンセットの発見 2005/08/04 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 4 クローン履歴関係抽出手法 指定された期間 [0, t]、間隔Δt について期間 [0, t] を Δt ごとに分割、 それぞれの時のファイルの状態をバージョン V0, V1, ..., Vt と表す 過去のプロダクトの取得には版管理システム (ex. cvs, subversion, ...) を用いる となりあうバージョン間について分析 V0, V1 をリポジトリから取得 V0, V1 間のクローン履歴関係を分析 Vt をリポジトリから取得 Vt-1, Vt 間を分析 ・・・ V0 V1 Vt-1 Vt 2005/08/04 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 5 クローン履歴を用いたプログラムの書き換え 1. 書き換え箇所の発見 要改善箇所の提示 2. 書き換え箇所の理解 クローンが入ったときのコミットログ 他の部分にコピーされた部分の 3. 書き換え 2005/08/04 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 6 書き換え候補の提示 クローン 履歴をつかって範囲を広げる 2005/08/04 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 7 書き換え箇所の理解支援 どこからコピーされた? 2005/08/04 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 8 作成中の支援環境 クローン履歴閲覧環境 Eclipse プラグイン 主なUI ディレクトリ単位でのクローン行数の変遷グラフ クローンマップ 過去の時点のソースコード参照 2005/08/04 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 9 今後の課題 2005/08/04 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 10 2005/08/04 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 11 版管理システム 2005/08/04 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 12 履歴を考慮したクローン分析 過去にクローン関係にあったコード片の抽出 過去の時点でのクローン解析情報 現在のクローンは、過去のどのクローンに対応するか? Clone A-3 追加 Clone A-1 Clone A-1 Clone B-1 Clone B-1 Clone A-3 Clone A-1 Clone B-1 Clone A-3 Clone A-4 Clone A-4, A-5 追加 Clone A-2 Clone B-2 Clone B-3 Clone A-2 Clone B-5 Clone B-4 Clone B-2 Clone B’-3 Clone A-2 Clone B’-2 Clone B’-1 Clone B’-3 Clone B-3, B-4, B-5 が編集 されて別クローンセットに 2005/08/04 Clone B’-2 Clone B-2 Clone A-5 Clone B’-1 Clone B’-3 削除 クローンセット B, B’ を 「分離クローンセット」と呼ぶ Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 13
© Copyright 2024 ExpyDoc