CodeClone†
データ置き場†
堀田さんからもらったツールの詳細†
ツールがやっていること†
- 入力リポジトリからコードクローンの系譜を特定して,データベースに出力します
- 基本的には IPSJ-JNL5502038.pdf の論文に記述されている通りのことをしています.
- # コードクローンの追跡アルゴリズムが少し違います
実行環境†
- Java 1.7 以降がインストールされている必要があります
実行に必要な設定ファイル†
-ectec.properties
ツールの実行に必要な設定情報を記述したファイルです
カレントディレクトリに配置してください
- log4j.properties
ログの出力に使用している Log4j の設定を記述したファイルです
カレントディレクトリに配置してください
入力として与える必要があるもの†
- リポジトリの情報を記述したCSVファイル
分析対象リポジトリの情報を記述したCSVファイルです
例は repository.csv をご参照ください.
列は4つで,左から,『リポジトリのID(基本は0で大丈夫です),リポジトリ名(プロジェクト名や略称等 任意の文字列),リポジトリのURL(ローカルにおいてあるリポジトリの場合は file:/// から始まります),"svn"(バージョン管理システム名 現状は Subversion のみ対応なので,"svn"としてください)』です.
実行方法†
- 1. 出力用データベースの作成
ectec-dbmaker.jar を使用します
以下のように実行してください
$ java -jar ectec-dbmaker.jar **.db
- 2. リポジトリ情報の登録
ectec-repositoryregisterer.jar を使用します.
また,リポジトリ情報を記述したCSVファイルもここで使います.
$ java -jar ectec-repositoryregisterer.jar -d **.db -i repository.csv
"-d"の後ろは 1. で作ったデータベースへのパス,"-i" の後ろはリポジトリ情報を記述したCSVファイルへのパスです.
"-d"の指定方法は以降のすべてのステップで共通ですので,以降は"-d"に関する説明は割愛します.
- 3. 分析対象リビジョンの特定
ectec-revisiondetector.jar を使用します.
$ java -jar ectec-revisiondetector.jar -d **.db
- 4. リポジトリの連結
ectec-combiner.jar を使用します
複数のリポジトリをくっつけて分析する機能が実装されていて,
そのために必要なステップです.
仕様上,1つのリポジトリを対象にした分析でもこのステップを実行する必要があります
$ java -jar ectec-combiner.jar -d **.db
- 5. ファイルの特定
ectec-filedetector.jar を使用します
$ java -jar ectec-filedetector.jar -d **.db
- 6. コード片の特定
ectec-fragmentdetector.jar を使用します
$ java -jar ectec-fragmentdetector.jar -d **.db
- 7. コードクローンの検出
ectec-clonedetector.jar を使用します
$ java -jar ectec-clonedetector.jar -d **.db
- 8. リビジョン間のコード片の対応付け
ectec-fragmentlinker.jar を使用します
$ java -jar ectec-fragmentlinker.jar -d **.db
- 9. リビジョン間のコードクローンの対応付け
ectec-clonelinker.jar を使用します
$ java -jar ectec-clonelinker.jar -d **.db
- 10. コードクローンの系譜図の特定
ectec-genealogydetector.jar を使用します
$java -jar ectec-genealogydetector.jar -d **.db -gm c
"-gm c" という引数がありますのでご注意ください
実行時の注意†
- とにかくメモリを消費します
- OutOfMemoryError で落ちる場合は, java -jar -Xmx4g **.jar というように指定して使用メモリの上限を増やして実行してください
- それでも落ちる場合はご連絡ください
- マルチスレッドで実行する機能があります.
- ectec.properties の ectec.threads のところの数値をいじれば変更可能です
- 出力結果のデータベースから,コードクローンの系譜に関する基本的な情報は得られると思います
さらに,出力結果のデータベースを利用して,個々の系譜のソースコード等を取得する機能も実装しています
そちらが必要な場合はご連絡いただければ,使用方法をご説明いたします
Projects