かんがるーさんの日記

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

Spring Boot 2.4.x の Web アプリを 2.5.x へバージョンアップする ( その7 )( PMD を 6.32.0 → 6.38.0 へバージョンアップする )

概要

記事一覧はこちらです。

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

  • 今回の手順で確認できるのは以下の内容です。
    • PMD を 6.32.0 → 6.38.0 へバージョンアップします。

参照したサイト・書籍

  1. PMD
    https://pmd.github.io/

目次

  1. build.gradle を変更する
  2. 警告の原因を取り除く
    1. Logger calls should be surrounded by log level guards.
    2. The constructor 'PagenationHelper(Page)' has a cognitive complexity of 15, current threshold is 15

手順

build.gradle を変更する

pmd {
    toolVersion = "6.38.0"
    sourceSets = [project.sourceSets.main]
    ignoreFailures = true
    consoleOutput = true
    ruleSetFiles = rootProject.files("/config/pmd/pmd-project-rulesets.xml")
    ruleSets = []
}
  • toolVersion = "6.32.0"toolVersion = "6.38.0" に変更します。

Gradle Tool Window の左上にある「Refresh all Gradle projects」ボタンをクリックして更新した後、clean タスク実行 → Rebuild Project 実行 → build タスクを実行すると PMD で警告が出ました。

f:id:ksby:20210903064349p:plain

警告の原因を取り除く

警告は全部で 2種類、12箇所です。

f:id:ksby:20210903071233p:plain

Logger calls should be surrounded by log level guards.

Logger calls should be surrounded by log level guards. のリンクをクリックすると GuardLogStatement のページが開きました。

f:id:ksby:20210903071519p:plain

ログ出力時に isXxxEnabled メソッドでログレベルの有効性をチェックすべきという警告なのですが、実際に指摘された箇所を見ると info や error メソッドを呼び出してログを出力している箇所だったので isXxxEnabled メソッドを付けるのは避けたいかな。。。

今回は config/pmd/pmd-project-rulesets.xml に設定を追加して、trace, debug のログ出力だけこのチェックが実行されるようにします。

    <rule ref="category/java/bestpractices.xml">
        <!-- CommentRequired はここでは exclude し、下で別途定義する -->
        <exclude name="GuardLogStatement"/>
    </rule>
    <rule ref="category/java/bestpractices.xml/GuardLogStatement">
        <properties>
            <property name="logLevels" value="trace,debug"/>
            <property name="guardsMethods" value="isTraceEnabled,isDebugEnabled"/>
        </properties>
    </rule>

The constructor 'PagenationHelper(Page)' has a cognitive complexity of 15, current threshold is 15

The constructor 'PagenationHelper(Page)' has a cognitive complexity of 15, current threshold is 15 のリンクをクリックすると CognitiveComplexity のページが開きました。

f:id:ksby:20210903072647p:plain

src/main/java/ksbysample/webapp/lending/helper/page/PagenationHelper.java のメソッドが複雑なので警告が出ているのですが、今回はメソッドに @SuppressWarnings("PMD.CognitiveComplexity") を付与して警告が出ないようにします。

clean タスク実行 → Rebuild Project 実行 → build タスクを実行すると無事 "BUILD SUCCESSFUL" のメッセージが出力されました。

f:id:ksby:20210903211013p:plain

履歴

2021/09/03
初版発行。