Build and Run - niyaton/kenja GitHub Wiki
とりあえずBuildやら実行やらの仕方についてメモ書きしておいて,setup.pyスクリプトやらを作る時に参考にするためのページです.
Pythonスクリプト群の実行に必要なライブラリ群
-
pyrem_torq
- Extract Methodの検出時にメソッドから削除,追加されたコードを簡易構文解析しており,その時に使用しています.
-
GitPython
- 本ツールの肝はHistorageです.HistorageはGitを使って実装されているので,Gitを扱うためのGitPythonが必要不可欠です.
-
GitDB
- 本ツールではHistorageの構築を高速化するために,Gitのtreeやblobをプログラムから直接生成しており,そのときにGitDBライブラリを使用しています.
GitDBについてはGitPythonインストール時に勝手にインストールされるのかどうか確認する必要あり? Pythonの実行環境としては2.7系を推奨します.
Javaの構文解析を行うために必要なパーサの生成方法について.
kenjaでは上記pythonスクリプトを用いてHistorageを構築し,リファクタリングの検出を行います. Historage構築時にはJavaファイルを構文解析し,メソッドやクラスなどの情報をHistorageが提案する構造に従ってGitリポジトリにファイルツリーを構築します. kenjaはJavaファイルの構文解析をJava言語で実装しており,Historage構築用のPythonプログラムからjarを呼び出すことで構文解析を行っています.
jarファイルの生成にはmavenを利用します.maven3がインストールされている環境では,プロジェクトのルートディレクトリで以下のコマンドを実行することでjarファイルが生成されます.
mvn assembly:assembly
mavenにより生成されたjarファイルはbinディレクトリ以下にkenja-pareser.jarという名前で設置すれば良いのですが,2013年7月9日時点ではmavenが自動的に生成するパスにリンクを貼ったシンボリックリンクがbin/kenja-parser.jarに存在しています.なお,WindowsのGitは(基本的に)シンボリックリンクを理解しないので生成されるパーサをbin/kenja-parser.jarにコピーしてやる必要があります.
Historageへの変換は以下のコマンドで行えます
bin/convert --non-parallel <src_repository_path> <output_dir>
ここで,<src_repository_path>には既存のGitリポジトリへのパスを(.gitが含まれているディレクトリでもそのひとつ上のディレクトリでも大丈夫です)指定します.
現在,non-parallelオプションを与えて実行しないと正常に動作しません.頃合いを見計らって--non-parallelオプションを廃止する予定です.
変換後のリポジトリは<output_dir>/base_repoに生成されます. <output_dir>/syntax_treesには一時的に生成された構文情報ファイルが記録されています.変換後は不要なので削除して頂いて問題ありません.(将来のバージョンで自動的に削除するようにする予定です)
メソッド抽出リファクタリングの検出は以下のコマンドで行えます.
bin/refactoring_detection <historage_path>
コマンドの第一引数にはHistorageのパスを指定して下さい.
現在,kenjaの出力は作者の比較実験の都合上,全ての出力結果についてパッケージ名に"jedit."を付加します. 不要な場合は/refactoring_detection.pyを修正するなりなんなりして下さい.申し訳ありません.