Improving SW Process/Products with Code Clone Information
Yoshiki Higo, Shinji Kusumoto, Katsuro Inoue · 2003
2. 筆者の取り組み 2.1. コードクローン コードクローンとは,ソースコード中に存在する互い に一致・類似するコード片を指し,「重複コード」とも呼 ばれる.コードクローンは,ソフトウェアの保守作業を困 難にする一つの要因である,と指摘されている. 2.2. 支援ツール 著者はコードクローンに対する保守支援を行うため, コードクローン検出ツール CCFinder[1]やコードクロー ン分析ツール Gemini[2]を開発してきている.CCFinder や Gemini を用いることで大規模ソフトウェアから短時間 でコードクローンを検出し,特徴(長さや同形コード片 の数など)を指定することで該当するコードクローンのソ ースコードをシームレスに確認できる.現在では,開発 したツールを Gemini/CCFinder パッケージとして,国内 外の個人・組織に配布している,また著者自らが企業ま で赴いて分析作業を行う場合もある. 2.3. コードクローン分析の目的 現在,コードクローン分析の目的は大まかに三つに 分けられる.( 1 ) ソースコードと設計情報が与えられ たときに,実装と設計の対応がとれているかの調査を行 う.具体的には,設計情報で重複している部分はソース コードでも重複しており,それ以外の部分には重複をし ている部分がないかを確認する.( 2 ) 長い間保守さ れているシステムのソースコードとそのバグ情報が与え られたときに,コードクローンとバグの関係を調べること により,今後の保守作業に役立てる.( 3 ) 複数バー ジョンのソースコードが与えられたときに,バージョン間 でのコードクローンの遷移を調査し,保守作業の効率 化を計る.例えば,繰り返し修正が加えられているコー ドクローンは,集約などを行い将来的な修正コストを抑 えるべきであるかもしれない.一方,安定しているコード クローンはシステムの保守コストを悪化させていないの で,リファクタリングは不要であると思われる.