概要
フォーマッタは spotless でリンターは checkstyle + spotless を使います
googleJavaFormat は Java26 では使えないので eclipse を使います
環境
- macOS 26.4.1
- openjdk 26.0.1
- SpringBoot 4.0.6
- gradle 9.5.1
- VSCode 1.121.0
- MySQL 9.6.0
build.gradle
plugins {
id 'java'
id 'org.springframework.boot' version '4.0.6'
id 'io.spring.dependency-management' version '1.1.7'
id 'checkstyle'
id 'com.diffplug.spotless' version '6.25.0'
}
checkstyle {
toolVersion = '10.12.0'
}
spotless {
java {
eclipse()
target 'src/**/*.java'
}
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(26)
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-webmvc'
developmentOnly 'org.springframework.boot:spring-boot-docker-compose'
runtimeOnly 'com.mysql:mysql-connector-j'
testImplementation 'org.springframework.boot:spring-boot-starter-data-jpa-test'
testImplementation 'org.springframework.boot:spring-boot-starter-webmvc-test'
testImplementation 'org.springframework.boot:spring-boot-testcontainers'
testImplementation 'org.testcontainers:testcontainers-junit-jupiter'
testImplementation 'org.testcontainers:testcontainers-mysql'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
tasks.named('test') {
useJUnitPlatform()
}
追記しているのは以下の部分だけです
plugins {
id 'java'
id 'org.springframework.boot' version '4.0.6'
id 'io.spring.dependency-management' version '1.1.7'
id 'checkstyle'
id 'com.diffplug.spotless' version '6.25.0'
}
checkstyle {
toolVersion = '10.12.0'
}
spotless {
java {
eclipse()
target 'src/**/*.java'
}
}
config/checkstyle/checkstyle.xml
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
"https://checkstyle.org/dtds/configuration_1_3.dtd">
<module name="Checker">
<module name="TreeWalker">
<module name="UnusedImports"/>
</module>
</module>
実行
spotless はフォーマットしてリントもします
- ./gradlew spotlessApply
- ./gradlew spotlessCheck
最後の stylecheck でもリントします
- ./gradlew checkstyleMain
vscode 側の設定
保存時にフォーマットしたい場合には settings.json に以下を追記します
{
"editor.formatOnSave": true
}
全部一気に lint する場合
build.gradle に以下を追記します
tasks.register('format') {
dependsOn 'spotlessApply'
}
tasks.register('lint') {
dependsOn 'spotlessCheck', 'checkstyleMain'
}
- ./gradlew format
- ./gradlew lint
最後に
SpringBoot のプロジェクトにフォーマッタとリンタを導入してみました
VSCode で Extention Pack for Java を使っている場合は LSP がフォーマットしてくれますがそれはあくまでも VSCode 側のフォーマッタなので別途 CI などでチェックする場合には spotless などを使いましょう