Software Development/Utility
[Spotless] 클릭 한 번으로 코드 정리하기
SeongHo5
2024. 5. 29. 14:04
Spotless란?
코드 스타일 규칙을 자동으로 적용하여 코드베이스의 일관성 유지를 도와주는 오픈 소스 도구입니다.
Gradle 플러그인으로 쉽게 통합할 수 있으며, Java, Kotlin, Groovy, Scala, Python, C, C++, Markdown, JSON, XML 등을 지원합니다.
Spotless를 의존성에 추가하기
// build.gradle
plugins {
id 'java'
id 'com.diffplug.spotless' version '6.25.0'
}
repositories {
mavenCentral()
gradlePluginPortal()
}
Spotless를 사용하려면, Gradle 플러그인 포털에 대한 정보를 추가해주어야 합니다.
gradlePluginPortal()을 잊지 말고 추가해주세요!
Spotless 설정 구성하기
// build.gradle
spotless {
java {
importOrder(
'java|javax|jakarta',
'org.springframework',
'lombok',
'',
'org.junit|org.mockito',
'\\#',
'\\#org.junit'
)
googleJavaFormat()
formatAnnotations()
removeUnusedImports()
trimTrailingWhitespace()
endWithNewline()
}
}
- importOrder - import문이 정렬될 순서를 설정할 수 있습니다.
- 작성된 순서대로 정렬되고, 그룹 간 줄 바꿈으로 구분됩니다.
- | - 파이프라인을 사용해, 줄 바꿈 없이 그룹
- ' ' - 순서를 정의하지 않은 그 외 나머지를 표현할 때 사용합니다.
- \\# - static import문에 대한 정렬 순서를 설정할 때 사용합니다.
- googleJavaFormat() - Google Java Style을 따르도록 포맷을 적용합니다. 버전을 명시할 수 있습니다.
Google Java Style Guide
1 Introduction This document serves as the complete definition of Google's coding standards for source code in the Java™ Programming Language. A Java source file is described as being in Google Style if and only if it adheres to the rules herein. Like ot
google.github.io
- removeUnusedImports() - 불필요한 import 문을 제거합니다.
- trimTrailingWhitespace() - 각 줄의 끝에 있는 불필요한 공백을 제거합니다.
- endWithNewline() - 파일 끝에 항상 새로운 줄을 추가합니다.
- formatAnnotations() - 어노테이션을 정렬합니다.
Spotless 관련 Gradle 명령어
- 코드 베이스가 Spotless에 정의된 규칙을 지키고 있는지 검사
./gradlew spotlessCheck
- 코드 베이스를 Spotless에 정의된 규칙에 맞게 포맷팅
./gradlew spotlessApply
포맷을 항상 일관되게 유지하려면, build 전에 spotlessApply를 실행하도록 아래와 같이 구성할 수 있습니다.
tasks.named('build') {
dependsOn 'spotlessApply'
}