はじめに
個人開発で作成したコードに対して以下の作業をしてみます。
・CheckstyleでJavaのコーディング規約に準じていない部分を検出
・OpenRewriteで一部をリファクタリング
開発環境
- Linux(Kali 5.10.0)
- Gradle 7.2.0
- Java 16.0.1
導入
Checkstyle
Gradleにプラグインとバージョン情報を追加
plugins {
id 'checkstyle'
}
checkstyle {
toolVersion = '10.3.2'
}
checkstyle.xmlを追加
まず、checkstyle.xmlを配置する新しいディレクトリを作成します。
デフォルトの構成は以下のようになります。
(root)
└── config
└── checkstyle
└── checkstyle.xml
checkstyle.xmlはcheckstyleの公式GitHubレポジトリからコピペできます。
参考リンク:checkstyle.xmlのコピペ先
GoogleのスタイルとSunのスタイルがありますが、私はGoogleスタイルを選びました。
ちなみにカスタマイズしたcheckstyle.xmlを登録することもできます。
実行
$ ./gradlew build
結果
buildが完了したらrootディレクトリ/build/reports/checkstyle
にレポートが生成されます。
↓こんな感じでhtmlファイルでレポートが生成されます。ていうかめっちゃ怒られましたね😂
OpenRewrite
Gradleにプラグインとレシピを追加
plugins {
id 'checkstyle'
id 'org.openrewrite.rewrite' version'5.25.0'
}
rewrite {
activeRecipe("org.openrewrite.java.format.AutoFormat")
activeRecipe("org.openrewrite.java.cleanup.Cleanup")
activeRecipe("org.openrewrite.java.OrderImports")
}
activeRecipeにはリファクタリングしてもらいたい主題について記入します。
レシピのリストは公式サイトからご確認してください。
参考リンク:javaのレシピリスト
実行
$ ./gradlew rewriteRun
結果
再度、./gradlew build
を実行して様子を確認してみます。
1回目よりは減りましたね。でも、まだまだ多くありますね🥺。
レポートを読んでみたらインデントのこととimportコードの位置に関する指摘がほとんどでした。
AutoFormatとOrderImports
のレシピで修正をお願いしましたけれど、解決できなかったようです。
恐らくGoogleスタイルの方向性とopenrewriteの方向性に齟齬があったのではないでしょうかね🤔。
リファクタリングの対象外ファイルを追加
rewrite {
activeRecipe("org.openrewrite.java.format.AutoFormat")
activeRecipe("org.openrewrite.java.cleanup.Cleanup")
activeRecipe("org.openrewrite.java.OrderImports")
//リファクタリングの対象外ファイルを追加
exclusion(
"**/*.gradle", "**/*.json", "**/")
}
}
exclusion
にリファクタリングの対象外にしたいファイルを追加することができます。
最後に
詳細のコードはGibHub上でアップしています。
build.gradle
リファクタリング前後のレポート