かんがるーさんの日記

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

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

概要

記事一覧はこちらです。

Spring Boot 2.4.x の Web アプリを 2.5.x へバージョンアップする ( その5 )( Spock を 1.3-groovy-2.5 → 2.0-groovy-3.0 へバージョンアップする ) の続きです。

  • 今回の手順で確認できるのは以下の内容です。
    • 以下のドキュメントを見て必要な箇所を変更します。。。と思ったのですが、今回は変更が必要なところがありませんでした。
    • ただし Secure Info Endpointexposing リンクへ飛んだ先の 6.2.3. Securing HTTP Endpoints を見たところ SecurityConfiguration クラスの実装方法が全然違う!と思ったのですが、Spring Security Reference の 16.3. Multiple HttpSecurity を読んで今のままで変更する必要はありませんでした。
    • Checkstyle を 8.41 → 9.0 へバージョンアップします。
    • 最新版の 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. 最新版の google_checks.xml から変更点を反映する
  3. IntelliJ IDEA の CheckStyle-IDEA Plugin が使用する Checkstyle のバージョンを 8.45 に変更する
  4. @SuppressWarnings("checkstyle:...") が効かないことに気づいたので SuppressWarningsFilter、SuppressWarningsHolder を追加する

手順

build.gradle を変更する

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

Gradle Tool Window の左上にある「Refresh all Gradle projects」ボタンをクリックして更新した後、clean タスク実行 → Rebuild Project 実行 → build タスクを実行すると checkstyleMain タスクで Unable to create Root Module: ... というエラーメッセージが出力されました。

f:id:ksby:20210903021227p:plain

先に最新版の google_checks.xml の変更点を反映して、解決しなければ調査することにします。

最新版の google_checks.xml から変更点を反映する

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

  • <module name="NoWhitespaceBeforeCaseDefaultColon"/> を追加しました(https://checkstyle.org/config_whitespace.html#NoWhitespaceBeforeCaseDefaultColon)。
  • <module name="OperatorWrap"><property name="tokens">valueTYPE_EXTENSION_AND を追加しました。
  • <module name="JavadocMethod"><property name="scope" value="public"/><property name="accessModifiers" value="public"/> に変更しました。

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

f:id:ksby:20210903025149p:plain

  • Javadoc コメントがありません。 [com.puppycrawl.tools.checkstyle.checks.javadoc.MissingJavadocMethodCheck]
    • 以前は WARNING が出なかった src/main/java/ksbysample/webapp/lending/values/validation/ValuesEnum.java の @interface List 内のメソッドの Javadoc コメントがない点を指摘してくれるようになったようです。Javadoc コメントを追加します。

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

f:id:ksby:20210903030436p:plain

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

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

f:id:ksby:20210903031222p:plain

@SuppressWarnings("checkstyle:...") が効かないことに気づいたので SuppressWarningsFilter、SuppressWarningsHolder を追加する

今の設定だと @SuppressWarnings("checkstyle:...") が効かないことに気づいたので config/checkstyle/google_checks.xml を以下のように変更します。

    ..........

    <module name="SuppressWarningsFilter"/>

    <module name="TreeWalker">
        <module name="SuppressWarningsHolder"/>
        <module name="OuterTypeFilename"/>
        ..........
  • 以下の2行を追加します。
    • <module name="SuppressWarningsFilter"/>
    • <module name="SuppressWarningsHolder"/>

履歴

2021/09/03
初版発行。
2021/09/08
* @SuppressWarnings("checkstyle:...") が効かないことに気づいたので SuppressWarningsFilter、SuppressWarningsHolder を追加する を追加しました。