| SHINOBI |
|
SHINOBI は, ソフトウェアの保守時にコードクローンを自動的に検出するツールです.コードクローンを含むコードに変更を加える時には,他の全てのコードクローンにも同様の変更を行わなければならないことが多く,変更し忘れや見逃しが生じた場合には,不具合が混入し,信頼性が低下する原因となります.そのため,ソフトウェア保守開発プロセスでは,コードクローンを認識して保守を行うことが特に重要です.そこで,開発者のコードクローンに対する意識を調査・分析した結果に基づいて,開発者が保守開発プロセスにおいて自然にコードクローンを認識するための保守支援システムSHINOBIを開発しました.
SHINOBI を利用することで,開発者がこれから修正するコードに対して素早くかつ正確にコードクローンを検出することができるため,保守作業の作業効率の向上およびソフトウェアの品質向上が可能になります.
SHINOBI の特徴は以下の4 つです.
リアルタイム
SHINOBI は統合開発環境である Microsoft Visual Studio の Add-In として動作し, 開発者のカーソル移動やコード編集といったイベントを監視して,ユーザが閲覧・編集中のソースコードのコードクローンを自動的に検出します.そのため,開発者はコードクローンを検出するために新しい操作を習得する必要がありません.編集中のソースコードについて,常に重複箇所を示すことによって,コードクローンが存在する可能性に気づいていない開発者であっても,重複箇所を認識することを可能にしています.
ランキングおよびファイル情報の表示
検索したコードクローンのリストを, 編集中のファイルと関係が強い順にランキングし表示を行います.また,コードクローン周辺のコードが混入あるいは更新したバージョンやファイルの修正者,コメント,日付を表示することで,開発者がコードクローンを修正する必要があるかどうかを判断することが可能になります.
変数名の変更に対してロバスト
コードクローン検出エンジンは,変数名の変更に影響を受けないトークンベースのアルゴリズムを用います.これにより,まったく同一のソースコードだけでなく,変数名や関数名が書き換わった重複コードもコードクローンとして検出できます.
高いスケーラビリティ
SHINOBI は大規模ソフトウェアでも高速に動作可能であり,一度前処理を行えば,数百万ステップのソースコードに対してもコンマ数秒単位と非常に高速にコードクローン検出を行います.そのため,本環境は開発者が用いるごく普通の計算機であっても開発者にストレスを与えることなく動作します.
|
|
SHINOBI を用いることで,開発者に従来よく用いられている文字列検索ツール grep を利用したときと比較して,コードクローンを高速に検出できることが確認できています.
|
|
主な関連文献
|
|
山科 隆伸,上野 秀剛,伏田 享平,亀井 靖高,名倉 正剛,川口 真司,飯田 元,“レガシーソフトウェア保守プロセスにおける開発者によるコードクローン認識についての観察,” 情報処理学会第70回全国大会,March 2008.(掲載予定)
|
|