かんがるーさんの日記

最近自分が興味をもったものを調べた時の手順等を書いています。今は Spring Boot をいじっています。

Spring Boot 2.3.x の Web アプリを 2.4.x へバージョンアップする ( その4 )( Release Notes を見て必要な箇所を変更する。。。ことがなさそうなので Checkstyle を 8.35 → 8.41 へバージョンアップする )

概要

記事一覧はこちらです。

Spring Boot 2.3.x の Web アプリを 2.4.x へバージョンアップする ( その3 )( Spring Boot を 2.3.9 → 2.4.3 へバージョンアップする ) の続きです。

  • 今回の手順で確認できるのは以下の内容です。
    • 以下のドキュメントを見て必要な箇所を変更します。。。と思ったのですが、記述が多い割に今回は変更が必要なところがありませんでした。
    • Checkstyle を 8.35 → 8.41 へバージョンアップします。
    • 最新版の google_checks.xml の内容も反映します。

参照したサイト・書籍

  1. checkstyle / checkstyle
    https://github.com/checkstyle/checkstyle

  2. checkstyle/checkstyle - checkstyle/src/main/resources/google_checks.xml
    https://github.com/checkstyle/checkstyle/blob/master/src/main/resources/google_checks.xml

目次

  1. build.gradle を変更する
  2. IntelliJ IDEA の CheckStyle-IDEA Plugin が使用する Checkstyle のバージョンを 8.34 に変更する
  3. 最新版の google_checks.xml から設定をコピーする
  4. 今回 google_checks.xml に追加した COMPACT_CTOR_DEF とは?

手順

build.gradle を変更する

checkstyle {
    configFile = file("${rootProject.projectDir}/config/checkstyle/google_checks.xml")
    toolVersion = "8.41"
    sourceSets = [project.sourceSets.main]
}
  • toolVersion = "8.35"toolVersion = "8.41" に変更します。

Gradle Tool Window の左上にある「Refresh all Gradle projects」ボタンをクリックして更新した後、clean タスク実行 → Rebuild Project 実行 → build タスクを実行すると BUILD SUCCESSFUL が表示されましたが、以下の WARNING も出力されました。

f:id:ksby:20210303002809p:plain

  • [ant:checkstyle] [WARN] D:\project-springboot\ksbysample-webapp-lending\src\main\java\ksbysample\webapp\lending\util\doma\ComponentAndAutowiredDomaConfig.java:13:9: 'annotation array initialization' の子のインデントレベル 8 は正しくありません。期待されるレベルは 4 です。 [Indentation]

該当箇所を見てみると確かにインデントが 8 でした。

f:id:ksby:20210303003010p:plain

今はこのままにして、google_checks.xml を変更する時に対応します。

IntelliJ IDEA の CheckStyle-IDEA Plugin が使用する Checkstyle のバージョンを 8.40 に変更する

CheckStyle-IDEA Plugin に指定できるバージョンが 8.40 までだったので 8.40 を指定します。

f:id:ksby:20210303004753p:plain

最新版の google_checks.xml から設定をコピーする

最新版の google_checks.xml から差分を反映します。今回反映した内容を箇条書きで記述しておきます。

  • <module name="LeftCurly"><property name="tokens">value に COMPACT_CTOR_DEF を追加しました。
  • <module name="RightCurly"><property name="tokens">value に COMPACT_CTOR_DEF を追加しました。
  • <module name="WhitespaceAround"><property name="ignoreEnhancedForColon" value="false"/> を追加しました。
  • <module name="EmptyLineSeparator"><property name="tokens">value に COMPACT_CTOR_DEF を追加しました。
  • <module name="PatternVariableName">...</module> を追加しました。
  • <module name="Indentation"><property name="arrayInitIndent" value="4"/><property name="arrayInitIndent" value="8"/> に変更しました。上で出力された WARNING はこれで解消します。
  • <module name="AnnotationLocation"><property name="tokens">value に COMPACT_CTOR_DEF を追加しました。
  • <module name="RequireEmptyLineBeforeBlockTagGroup"/> を追加しました。
  • <module name="JavadocMethod"><property name="tokens">value に COMPACT_CTOR_DEF を追加しました。
  • <module name="MissingJavadocMethod"><property name="tokens">value に COMPACT_CTOR_DEF を追加しました。
  • <module name="MissingJavadocType">...</module> を追加しました。ただし <property name="tokens">value から RECORD_DEF は削除しました。

clean タスク実行 → Rebuild Project 実行 → build タスクを実行すると BUILD SUCCESSFUL が表示されましたが、WARNING も大量に出力されました。以下の点を変更します。

f:id:ksby:20210303084459p:plain

  • Javadoc コメントがありません。 [MissingJavadocType]
    • 以前は WARNING が出なかった箇所も指摘してくれるようになったようです。Javadoc コメントを追加します。
  • Javadoc tag '@return' の前には空の行が必要です。 [RequireEmptyLineBeforeBlockTagGroup]
    • Doma 2 で自動生成した Entity クラスで WARNING が出ていました。Ctrl+Alt+L でフォーマットすると解消されます。

再度 clean タスク実行 → Rebuild Project 実行 → build タスクを実行すると WARNING が出なくなりました。

f:id:ksby:20210303085411p:plain

今回 google_checks.xml に追加した COMPACT_CTOR_DEF とは?

https://checkstyle.sourceforge.io/apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html には A compact canonical constructor eliminates the list of formal parameters; they are declared implicitly. と記述されています。

同じページ内にある For example: のサンプルを見ると Java 14 からの Record 構文用の設定のようです。今回は RECORD_DEF のようにエラーや警告は出ないので追加したままにします。

 public record myRecord () {
     public myRecord{}
 }

履歴

2021/03/03
初版発行。