かんがるーさんの日記

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

Spring Boot 2.1.x の Web アプリを 2.2.x へバージョンアップする ( その7 )( PMD を 6.13.0 → 6.20.0 へバージョンアップする )

概要

記事一覧はこちらです。

Spring Boot 2.1.x の Web アプリを 2.2.x へバージョンアップする ( その6 )( Checkstyle を 8.19 → 8.28 へバージョンアップする ) の続きです。

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

参照したサイト・書籍

  1. PMD 6.20.0 - Java Rules - Code Style - UseShortArrayInitializer
    https://pmd.github.io/pmd-6.20.0/pmd_rules_java_codestyle.html#useshortarrayinitializer

  2. Baeldung - Initializing Arrays in Java - 3. At the Time of Declaration
    https://www.baeldung.com/java-initialize-array#at-the-time-of-declaration

目次

  1. build.gradle を変更する
  2. 警告の原因を取り除く
    1. int[] x = new int[] { 1, 2, 3 };int[] x = { 1, 2, 3 }; と書いてもいいの!?

手順

build.gradle を変更する

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

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

f:id:ksby:20200101192227p:plain

警告の原因を取り除く

int[] x = new int[] { 1, 2, 3 };int[] x = { 1, 2, 3 }; と書いてもいいの!?

生成されたレポートファイル build/reports/pmd/main.html をブラウザで開くと2箇所指摘されており、どちらも Problem には Array initialization can be written shorter が表示されていました。

f:id:ksby:20200101192951p:plain

Array initialization can be written shorter を開くと以下のページが開きました。

f:id:ksby:20200101195731p:plain

int[] x = new int[] { 1, 2, 3 };int[] x = { 1, 2, 3 }; と書いてもいいらしい。初耳です。。。

Web で検索してみると Baeldung に Initializing Arrays in Java - 3. At the Time of Declaration という記事が出ていました。確かにここにも記載されています。

型の指定が不要ならば記載しないように変更します。

src/main/java/ksbysample/webapp/lending/helper/download/booklistcsv/BookListCsvDownloadHelper.java の以下の点を変更します。

public class BookListCsvDownloadHelper implements DataDownloadHelper {

    private static final String[] CSV_HEADER = {"ISBN", "書名", "申請理由", "承認/却下", "却下理由"};
    private static final String CSV_FILE_NAME_FORMAT = "booklist-%s.csv";
  • new String[]{"ISBN", "書名", "申請理由", "承認/却下", "却下理由"}{"ISBN", "書名", "申請理由", "承認/却下", "却下理由"} に変更します。

src/main/java/ksbysample/webapp/lending/view/BookListCsvView.java の以下の点を変更します。

@Component(value = "BookListCsvView")
public class BookListCsvView extends AbstractView {

    private static final String[] CSV_HEADER = {"ISBN", "書名", "申請理由", "承認/却下", "却下理由"};
    private static final String CSV_FILE_NAME_FORMAT = "booklist-%s.csv";
  • new String[]{"ISBN", "書名", "申請理由", "承認/却下", "却下理由"}{"ISBN", "書名", "申請理由", "承認/却下", "却下理由"} に変更します。

clean タスク実行 → Rebuild Project 実行 → build タスクを実行すると無事 "BUILD SUCCESSFUL" のメッセージが出力されました。本当にエラーにならないんですね。。。

f:id:ksby:20200101202135p:plain

ちなみに引数の場合には型を指定する必要があります。以下のような変更を行うと IntelliJ IDEA のエディタ上で赤波線が表示されますし、build するとエラーになります。

errors.reject("UploadBooklistForm.fileupload.lengtherr"
        , new Object[]{line, csvdata.length}, null);

 ↓

errors.reject("UploadBooklistForm.fileupload.lengtherr"
        , {line, csvdata.length}, null);

履歴

2020/01/01
初版発行。