奈良先端科学技術大学院大学 > 情報科学研究科 / 情報科学センター

SHINOBI-コードクローン自動検出ツール

For WCRE2009 attenndee: Thank you very much for your interest. Now, we are currently fixing bugs and we have to postpone SHINOBI public release... If you have interested with our tool, please send e-mail to kawaguti at is.naist.jp. When we release SHINOBI, we will notify it as soon as possible. Sorry.

SHINOBIとは

SHINOBIは,ソフトウェアの保守時にコードクローンを自動的に検出するツールで す.コードクローンの検出は完全に自動で行われるため,開発者はクローンを 検出するために新しい操作を覚える必要がありません.

SHINOBIは,レガシーソフトウェア保守作業とクローンの関係に対する研究に基づ き実装したツールです.SHINOBIを利用することで,開発者がこれから修正するコー ドに対して素早くかつ正確にコードクローンを検出することができるため,保守作業の作業効率の向上および品質向上が可能になります.

SHINOBIのアーキテクチャを図 1 に示します.

SHINOBIアーキテクチャ図

SHINOBIの特長

SHINOBI起動時のイメージ
1. リアルタイム

統合開発環境(IDE)である Microsoft Visual Studioの Add-Inとして動作します.カーソル移動やコード編集といったイベントを監視して,開発者の指示なしに,自動的にクローンを検出します.カーソル行周辺のコードを自動的に検出キーとするために,開発者が検出キーを指定する必要はありません.
また,IDE上で動作することにより,開発者にとって今までと開発環境が変わらないため,学習コストが低くなります.

図 2 は,Visual Studioを起動したときの表示イメージ図になります.

2. ランキングおよびファイル情報の表示

検索したクローンのリストを,編集中のファイルと関係が強い順にランキングし表示を行います.また,クローン周辺のコードが混入あるいは更新したバージョンやファイルの修正者,コメント,日付を表示することで,開発者がクローンを修正する必要があるかどうかを判断することができます.

3. 変数名の変更に対してロバスト

クローン検出エンジンは,変数名の変更に影響を受けないトークンベースのア ルゴリズムを用いています.

4. 高いスケーラビリティ

SHINOBI は大規模ソフトウェアでも高速に動作可能であり,一度前処理を行えば, 数百万ステップのソースコードに対しても,リアルタイムにクローン検出を行うことができます.

今後の研究課題

1. ランキングアルゴリズムの評価および改善

本ツールをレガシーシステムに適用し,その有用性について検証する予定です.また,ランキングの評価を行い,必要があればランキング計算アルゴリズムを改善し精度向上を目指します.

2. コードと関係のある仕様書やテストドキュメントの表示

コードのデバッグやコーディングをしているときに,異なるプログラムファイルを開くことや,プログラム仕様書やテスト仕様書などのドキュメントファイルを開くことはよくあります.このような参照関係を追跡して,参照しているコードとドキュメントファイル間の関係を解析し,開発者(特に経験の浅い)が,コーディングやデバッグ時に,そのファイルとより結びつきの強いファイルを自動的に提示することにより,作業効率の向上を目指します.

ダウンロード

2008年度上期一般公開予定