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 へバージョンアップします。
参照したサイト・書籍
PMD 6.20.0 - Java Rules - Code Style - UseShortArrayInitializer
https://pmd.github.io/pmd-6.20.0/pmd_rules_java_codestyle.html#useshortarrayinitializerBaeldung - Initializing Arrays in Java - 3. At the Time of Declaration
https://www.baeldung.com/java-initialize-array#at-the-time-of-declaration
目次
手順
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 で警告が出ました。
警告の原因を取り除く
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 が表示されていました。
Array initialization can be written shorter を開くと以下のページが開きました。
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" のメッセージが出力されました。本当にエラーにならないんですね。。。
ちなみに引数の場合には型を指定する必要があります。以下のような変更を行うと 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
初版発行。