リファクタリングを行うべきクラスを教えてくれる RefactorFirst

f:id:Naotsugu:20210825182345p:plain


RefactorFirst とは

どのクラスからリファクタリングを開始すべきかを教えてくれる Java 用のツールです。

現在のバージョンは 0.2 となっています。

github.com

クラスの大きさ(メソッド数)や更新頻度(Gitのコミットログから)などから、リファクタリングにより効果が出やすいクラスをランク付けしたレポートを出力します。

f:id:Naotsugu:20210825182209p:plain

現在は 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 レポート

チャートは以下のようになります。

f:id:Naotsugu:20210825182345p:plain

  • 横軸:リファクタリングの困難さ
  • 縦軸:相対的な更新頻度
  • 色:リファクタリングの優先度(青(低)->緑(高))
  • 円の大きさ:メソッド数(getter/setterを除く)


下部にはリファクタリングの優先度順の一覧が出力されます。

f:id:Naotsugu:20210825182407p:plain


まとめ

どのクラスをリファクタリングすべきかの指標を提供する RefactorFirst について紹介しました。

現在は、Maven プロジェクトのプロジェクトレイアウトにしか対応しておらず、使い所も限られますが、自身のプロジェクトでちょっと見てみるのも面白いのではないでしょうか。

将来の予定では、Gradle プラグインへの対応や、単体テストのカバレッジなども含めたレポートなどが予定されているようです。