【SpringBoot】CheckStyleをGradleを使って導入する

SpringBootのイメージ画像 Java

CheckStyleとは

Javaの静的解析ツールの一種で、コーディング規約に従ってコードが書かれているかどうかをチェックするためのものである。

インデントが汚かったり、改行のポイントが汚かったりするところを指摘してくれる。

ディレクトリ構成

Spring Initializrでプロジェクトを初期化したばかりの、下記のディレクトリ構成を例に解説する。

$ tree . -L 1
.
├── HELP.md
├── README.md
├── build
├── build.gradle
├── config // configディレクトリは新規作成。ここにcheckstyleのファイルを格納
├── gradle
├── gradlew
├── gradlew.bat
├── settings.gradle
└── src

4 directories, 6 files

手順

1.Googleが用意してるxmlファイルをダウンロードする

https://github.com/checkstyle/checkstyle/blob/master/src/main/resources/google_checks.xml

上記でxmlファイルが配布されているので、./config/google_checks.xmlとしてダウンロードする。

これにはインデントや改行、命名規則などのルールが記載されている。

2.Gradleの設定を書き換える

build.gradleファイルの最後に、下記のように追加する。

configFileの指定で、ルールが書かれているファイルの場所を指定する。

// 省略

apply plugin: 'checkstyle'

checkstyle {
  toolVersion '8.16'
  configFile file('./config/google_checks.xml')
}

3.CheckStyleを実行してみる

下記のコマンドでコードチェックを行う。

$ ./gradlew check
[ant:checkstyle] [WARN] /Users/username/spring-webflux-sample/src/main/java/com/example/springwebfluxsample/SpringWebfluxSampleApplication.java:9: 'method def modifier' のインデントレ ベル 8 は正しくありません。期待されるレベルは 2 です。 [Indentation]
...

SpringWebFluxSampleApplication.javaファイルのインデントがルールに準拠していないため怒られていることが分かる。

4.レポートを確認

デフォルトではHTML形式のレポートが
./build/reports/checkstyle/main.html./build/reports/checkstyle/test.htmlに出力される。

このファイルをChromeなどのブラウザで開くと、より分かりやすい形式で指摘内容を確認することができる。

IntelliJの自動フォーマット機能を活かす場合

IntelliJの環境も同時に整えておくと、Command + Option + Lキーで
ルールに沿って自動整形できるようになる。

1.CheckStyle-IDEAプラグインをインストール

CheckStyle-IDEA - IntelliJ IDEs Plugin | Marketplace
This plugin provides both real-time and on-demand scanning of Java files with Checkstyle from within IDEA. Please note t...

こちらからプラグインをインストールする。

Command + ,で設定を開き、Plugins→歯車マーク→Install Plugin from Disk...をクリックし、
ダウンロードしたzipファイルを指定すると、プラグインが適用される。

2.xmlファイルを適用する

Command + ,で設定を開き、「Editor→Code Style→歯車マーク→Import Scheme→CheckStyle Configuration」をクリックし、最初にダウンロードしたxmlファイルを選択する。

この設定が完了後、「Command + Option + L」のショートカットを実行すると
コードが自動でフォーマットされていることが分かる。

$ ./gradlew check

BUILD SUCCESSFUL in 6s
6 actionable tasks: 6 executed

チェックコマンドを実行しても怒られないようになる。

まとめ

  1. ルールが書かれている設定ファイルを配置
  2. 対象のファイルを読み込む記述を追加
  3. コマンド実行すると解析される
タイトルとURLをコピーしました