CloneWarrior http://se.aist-nara.ac.jp/clonewarrior/ 大杉 直樹†, 神谷 年洋‡, 門田 暁人†, 松本 健一† †奈良先端科学技術大学院大学 情報工学科 {naoki-o, akito-m, matumoto}@is.aist-nara.ac.jp ‡科学技術振興事業団 さきがけ研究21 [email protected] SEA関西SPIN 1 内容 CloneWarrior 概要 検索対象のコード サンプルコード コードクローン 利用手順 今後の課題 SEA関西SPIN 2 概要 GUIベースのコードクローン視覚化ツール 容易なセットアップ • InstallShield によるセットアップウィザード シンプルなインタフェース • マウス操作によるコードクローンの検索,閲覧 高速コードクローン検索 • CCFinder によるコードクローン検索 コードクローン分析作業の保存 • コードクローン,オプション設定,ビューの状態を保存 コーディング作業との高い親和性 • ソースコードの変更を追跡 SEA関西SPIN 3 アーキテクチャ CloneWarrior Interfaces Source code list manager CCFinder controller Source code list view Source code selection information CCFinder Code clone detector User Code clone list manager Code clone list view Source codes and Code clones Information Code clone selection information Source code editor Source code editor Source codes SEA関西SPIN 4 画面の概要 検索対象のコードの一覧 サンプルコードの一覧 検索対象のコード コードクローン サンプルコード コードクローンの一覧 SEA関西SPIN 5 検索対象のコード(1/2) 検索対象のコードの一覧 検索対象のコード SEA関西SPIN 6 検索対象のコード(2/2) コードクローンを検索する対象のソースコード HDD上に記録されているソースコードを指定する コードクローンが含まれている可能性があるソースコード を指定する 下記の何れかの言語で書かれているソースコードを指 定する • C; C++; Java; COBOL; COBOL/S; HPL; Emacs Lisp; FORTRAN; Plain Text SEA関西SPIN 7 サンプルコード(1/2) サンプルコードの一覧 SEA関西SPIN サンプルコード 8 サンプルコード(2/2) 検索対象のコードと比較するコード断片(コードの 一部,或いは,全部) 検索対象のコードの一部(或いは,全部)をコピー& ペーストして指定する 検索対象のコードの一部に類似している可能性がある コード断片を指定する 記述言語は切り取り元の検索対象のコードに準ずる SEA関西SPIN 9 コードクローン(1/2) コードクローン コードクローンの一覧 SEA関西SPIN 10 コードクローン(2/2) 検索対象のコードとサンプルコードの間の類似した コード断片 検索対象のコードの一部(或いは,全部)と類似したサン プルコードの一部(或いは,全部)が検出される [最小クローンサイズ]オプションで指定したトークン数以 上,類似したトークンを含むものが検出される 検出されるコードクローンは CCFinder の実装に依存 する SEA関西SPIN 11 利用手順 セットアップ CloneWarrior の起動 プロジェクトの作成 オプションの設定 検索対象のコードの追加 サンプルコードの追加 プロジェクトの保存 コードクローンの検索 検索結果の閲覧 その他の機能 SEA関西SPIN 12 セットアップ CloneWarrior セットアッププログラムをメディアか らコピーしてください セットアッププログラムは以下のURLからダウンロードす ることもできます • http://se.aistnara.ac.jp/clonewarrior/CloneWarrior_1_6_7_26.zip setup.exe を実行し,セットアッププログラムの支 持に従ってセットアップを行ってください SEA関西SPIN 13 CloneWarrior の起動 Windowsの [スタート] メニューで [すべてのプロ グラム(P)]→[NAIST CloneWarrior 1.6]→ [CloneWarrior1.6] を選択して CloneWarrior を起動してください SEA関西SPIN 14 プロジェクトの作成 「プロジェクトの新規作成」ダイアログで新しく作成 するプロジェクトの名前を入力してください. プロジェクトの名前は,ユーザがプロジェクトを識別する ための文字列です. 入力できる文字に制限はありません. 入力が終わったら,[OK] ボタンを押して「プロジェ クト」の名前を決定してください. SEA関西SPIN 15 プロジェクトについて CloneWarrior プロジェクトファイル(拡張子cwp) はコードクローン検索作業の保存単位です プロジェクトファイルには,以下の情報が保存されます • • • • プロジェクト名 追加された,検索対象のコード 追加された,サンプルコード 検索された,コードクローン プロジェクトファイルを開くことで, 以前に行った検索作業を再開することができます • プロジェクトの保存方法は「プロジェクトの保存」で説明します SEA関西SPIN 16 オプションの設定 コードクローンの検索方法や,画面の表示方法に 関するオプションを設定してください 設定したオプションは CloneWarrior 終了時に ini ファイルに保存され,次回起動時に再現されます [ヘルプ] ボタンを押すと, 設定項目についての説明 が表示されます SEA関西SPIN 17 検索対象のコードの追加 ボタンを押して,追加するソースコードを選択 してください 以下のディレクトリにインストールされている Java のサ ンプルコードを追加してみてください • D:\Program Files\NAIST CloneWarrior\samples\ multiprogressbar\jp\ac\aist_nara\is\naoki_o\progressbar SEA関西SPIN 18 検索対象のコードの一覧 ここをクリックすると「名前」でソートします.もう一度クリックすると,ソートの 方向(降順,昇順)を入れ替えます ここをドラッグして左右にスライドさせると,「検索対 象のコードの一覧」の幅を変更することができます SEA関西SPIN 19 検索対象のコードの表示 表示されている検索対象のコードをダブルクリックすると,そのコードの内容 をテキストエディタ部分に表示します. SEA関西SPIN 20 サンプルコードの追加(1/3) ボタンを押してください 空白のサンプルコードが追加されます ユーザはカット&ペースト等で,サンプルコードを編集す ることができます SEA関西SPIN 21 サンプルコードの追加(2/3) 検索対象のコードの一覧で,マウスを右クリックし てください ポップアップメニューから [サンプルコードとして追 加(E)] を選択してください 検索対象のコードの一覧で選択している,検索対象のコードのテキスト (ソースコード全体)が,サンプルコードとして追加されます SEA関西SPIN 22 サンプルコードの追加(3/3) テキストエディタで,サンプルコードにする部分を選 択し,マウスを右クリックしてください ポップアップメニューから [サンプルコードとして追 加(E)] を選択してください テキストエディタで選択している,検索対象のコードのテキストの一部が, サンプルコードとして追加されます SEA関西SPIN 23 サンプルコードの一覧 ここをクリックすると「サイズ」でソートします.もう一度クリックすると,ソート の方向(降順,昇順)を入れ替えます ここをドラッグして左右にスライドさせると,「サンプ ルコードの一覧」の幅を変更することができます SEA関西SPIN 24 サンプルコードの表示 表示されているサンプルコードをダブルクリックすると,そのコードの内容を テキストエディタ部分に表示します SEA関西SPIN 25 プロジェクトの保存 ボタンを押し,保存するファイルの名前を入力し てください SEA関西SPIN 26 コードクローンの検索 ボタンを押してください コードクローン検索が完了するまでは,一部のメニュー の実行ができなくなります SEA関西SPIN 27 コードクローンの検索 コードクローン検索中は進行状況がウインドウ右下 のステータスバーに表示されます 検索開始前 ccfinder.exe でコードクローン検索中 検出したコードクローンの追加中 検索完了 SEA関西SPIN 28 コードクローンの一覧 ここをクリックすると「サイズ」でソートします.もう一度クリックすると, ソートの方向(降順,昇順)を入れ替えます ここをドラッグして上下にスライドさせると,「コードク ローンの一覧」の高さを変更することができます SEA関西SPIN 29 コードクローンの表示 表示されているコードクローンを選択すると,コードクローン の範囲をテキストエディタ上で強調表示します SEA関西SPIN 30 コードクローンの絞込み 一覧で選択された「検索対象のコード」と「サンプルコード」の間に含まれる コードクローンだけが{コードクローンの一覧」に表示されます SEA関西SPIN 31 コードへの変更の追跡 検索の後,変更があった検索対象のコード,及び, サンプルコードの横には マークが表示される タイムスタンプが変更され検索対象のコードは CloneWarrior が読み込み直す CloneWarrior 組込のテキストエディタによる編集も追 跡する 次回検索時には,変更があったコードのみを対象 に検索を行う 変更がないコードには新たなコードクローンはないから SEA関西SPIN 32 今後の課題(1/3) ユーザビリティの改善 「検索対象のコード」,「サンプルコード」という分類を 廃止する • 「検索対象のコード」,「サンプルコード」という分類は分かり にくいという指摘をいただいたので ユーザインタフェースの国際化(英語化)を行う ドキュメントの国際化(英語化)を行う SEA関西SPIN 33 今後の課題(2/3) スケーラビリティの改善 検索対象のコードの一覧,サンプルコードの一覧,並び に,コードクローンの一覧の描画処理の経過を示すプロ グレスバーを実装する • 大量のデータを処理すると,リアルタイムに制御が帰ってこなく なるので SEA関西SPIN 34 今後の課題(3/3) ポータビリティの改善 .NET アプリケーションとしてビルドする • 現在,Windows XP などの限られた OS 上でしか動作しない ので SEA関西SPIN 35
© Copyright 2024 ExpyDoc