LoginSignup
0
0

More than 1 year has passed since last update.

GradleでCheckstyleとOpenRewriteを使ってみた

Last updated at Posted at 2022-08-06

はじめに

個人開発で作成したコードに対して以下の作業をしてみます。
・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ファイルでレポートが生成されます。ていうかめっちゃ怒られましたね😂
image.png

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を実行して様子を確認してみます。
image.png
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
リファクタリング前後のレポート

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0