RefactorFirst とは
どのクラスからリファクタリングを開始すべきかを教えてくれる Java 用のツールです。
現在のバージョンは 0.2 となっています。
クラスの大きさ(メソッド数)や更新頻度(Gitのコミットログから)などから、リファクタリングにより効果が出やすいクラスをランク付けしたレポートを出力します。
現在は Maven プラグインとして提供されています。
RefactorFirst を使ってみる
Commons Lang を例に RefactorFirst を使ってみましょう。
$ git clone https://github.com/apache/commons-lang.git $ cd commons-lang
プロジェクトルートで以下のようにすればレポートが出力されます。
$ mvn "org.hjug.refactorfirst.plugin:refactor-first-maven-plugin:0.2.0:report"
今回は、Docker で進めます。
docker run -it --rm --name refactorfirst -v "$(pwd)":/usr/src/mymaven -w /usr/src/mymaven maven:3-openjdk-11 mvn "org.hjug.refactorfirst.plugin:refactor-first-maven-plugin:0.2.0:report"
ちなみに、$(pwd)
は、Windows(Powershell)の場合は ${pwd}
に読み替えてください。
レポートは、target/site/refactor-first-report.html
に作成されます。
RefactorFirst レポート
チャートは以下のようになります。
- 横軸:リファクタリングの困難さ
- 縦軸:相対的な更新頻度
- 色:リファクタリングの優先度(青(低)->緑(高))
- 円の大きさ:メソッド数(getter/setterを除く)
下部にはリファクタリングの優先度順の一覧が出力されます。
まとめ
どのクラスをリファクタリングすべきかの指標を提供する RefactorFirst について紹介しました。
現在は、Maven プロジェクトのプロジェクトレイアウトにしか対応しておらず、使い所も限られますが、自身のプロジェクトでちょっと見てみるのも面白いのではないでしょうか。
将来の予定では、Gradle プラグインへの対応や、単体テストのカバレッジなども含めたレポートなどが予定されているようです。