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 の内容も反映します。
参照したサイト・書籍
checkstyle / checkstyle
https://github.com/checkstyle/checkstylecheckstyle/checkstyle - checkstyle/src/main/resources/google_checks.xml
https://github.com/checkstyle/checkstyle/blob/master/src/main/resources/google_checks.xml
目次
- build.gradle を変更する
- IntelliJ IDEA の CheckStyle-IDEA Plugin が使用する Checkstyle のバージョンを 8.34 に変更する
- 最新版の google_checks.xml から設定をコピーする
- 今回 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 も出力されました。
[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 でした。
今はこのままにして、google_checks.xml を変更する時に対応します。
IntelliJ IDEA の CheckStyle-IDEA Plugin が使用する Checkstyle のバージョンを 8.40 に変更する
CheckStyle-IDEA Plugin に指定できるバージョンが 8.40 までだったので 8.40 を指定します。
最新版の 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 も大量に出力されました。以下の点を変更します。
Javadoc コメントがありません。 [MissingJavadocType]
- 以前は WARNING が出なかった箇所も指摘してくれるようになったようです。Javadoc コメントを追加します。
Javadoc tag '@return' の前には空の行が必要です。 [RequireEmptyLineBeforeBlockTagGroup]
- Doma 2 で自動生成した Entity クラスで WARNING が出ていました。Ctrl+Alt+L でフォーマットすると解消されます。
再度 clean タスク実行 → Rebuild Project 実行 → build タスクを実行すると WARNING が出なくなりました。
今回 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
初版発行。