あるSEのつぶやき・改

ITやシステム開発などの技術に関する話題を、取り上げたりしています。

Spring Boot にソースコードを整形する Spotless を組み込む

はじめに

Java のシステム開発に限らないのですが、ソースコードの整形方法って人によって異なるし、場合によっては言い争いになりかねないので、開発プロジェクトではコード規約を作って遵守するようにします。

ただ、ソースコードの整形方法を目視で確認するのは、大変労力がかかる上に得るものが少ないものです。

このソースコードの整形を自動でできるツールがあります。

Java では Spotless が該当します。

Spotless は以下で開発され公開されています。

GitHub - diffplug/spotless: Keep your code spotless

今回は、IntelliJ IDEA で開発する Spring Boot のプロジェクに、Gradle で Spotless を実行できるようにします。

Spotless は Java だけではなく、Kotlin や SQL、TypeScript なども対象にソースコードの整形を行えます。

spotless/plugin-gradle at main · diffplug/spotless · GitHub

ソースコードを整形するルールは、Google が公開している、以下の Google Java Style Guide を適用します。

Google Java Style Guide

Gradle の設定

Graldle の Spotless の最新バージョンは、以下のページで確認できます。

Maven Repository: com.diffplug.spotless » spotless-plugin-gradle

本日(2022/06/20)時点の最新バージョンは、 6.7.2 になります。

build.gradle に以下のように設定します。

plugins {
  // Spotless
  // https://mvnrepository.com/artifact/com.diffplug.spotless/spotless-plugin-gradle
  id "com.diffplug.spotless" version "6.7.2"
}

apply plugin: "com.diffplug.spotless"

// Google Java Style を Spotless に適用する
spotless {
    java {
        googleJavaFormat()
    }
}

Spotless の実行

Spring Boot のプロジェクトには、プロジェクトのルートに gradlew が作成されているので、以下のように Spotless を実行してソースコードを整形します。

$ ./gradlew spotlessApply

例えば、以下のようなソースコードがあるとします。

package com.example.demo;


import lombok.Data;


public class Sample {

  public void methodSample(String         message)
  {




    System.out.println(
      message
    );
  }
}

不要な改行、スペース、import 文がありますが、Spotless 実行後は以下のようになります。

package com.example.demo;

public class Sample {

  public void methodSample(String message) {

    System.out.println(message);
  }
}

キレイに整形されましたね。

実際の開発プロジェクトでは、もっと対象範囲が広いので効果も大きくなります。

なお、Gradle のコマンドが止まってしまう場合は、以下のコマンドを実行することで問題を回避できます。

$ ./gradlew --stop

おわりに

Spotless によりソースコードの整形を自動化することにより、タブだのインデントのスペース数だのに悩まされることなく開発に集中できるようになります。

Spotless でなくてもよいのですが、ソースコードの自動整形は開発生産性が大きく向上するのでぜひ試してみていただければと思います。