分散型版管理システムにおけるコードクローンの一貫した修正支援ツール

藤原 雄介(1251090)


コードクローンとはソースコード中に存在する,互いに一致または類似したコード片を指す.コードクローンを変更する際に,対応する全てのコードクローンに対して一貫した修正を行うべきか検討する必要がある. コードクローンに対する修正の一貫性を確認するためには,開発者はソースコードを変更する度にコードクローン検出ツールを起動する必要があり,実装に専念する事が難しくなる. 開発環境にコードクローン検出ツールを組み込み,開発者がソースコードを変更する度にコードクローン検出を実施する方法が解決策として考えられる.しかし,ソースコードの修正完了前にコードクローンに対する変更が頻繁に通知されるため,実装を妨げると考えられる.コードクローンに対する変更を通知する頻度として,版管理システムへのコミット単位が考えられる.コミット単位であれば,頻度は小さく,かつ編集作業が完了しているため,実装の妨げにならないと考えられる.

本研究では,版管理システムを用いた開発プロセスに適したコードクローン修正支援手法を提案する.本手法では,開発者毎にローカルリポジトリ(個人用リポジトリ)が用意される分散型版管理システムに着目し,ローカルリポジトリへのコミットや他の開発者の作業をマージする際に,修正を検討するべきコードクローンを通知することにより,修正支援を行う.ローカルリポジトリへのコミットやマージは他の開発者のソースコードへ反映されないため,一貫した修正を行った後に他の開発者へ修正を共有する事が出来る. 提案手法の有効性を確認するため,既存のツールと提案手法を実装したツールを用いて対照実験を行った. 実験の結果,提案手法によりコードクローンに対する保守作業の効率が向上する事を確認した.