일기장

Spotless란?

Spotless는 코드 포맷팅을 자동화하여 프로젝트의 코드 스타일을 일관성 있게 유지하는 데 도움을 주는 Gradle 및 Maven 플러그인입니다. Spotless는 다양한 프로그래밍 언어와 파일 형식을 지원하며, Google Java Format, ktlint, Prettier 등과 같은 외부 코드 포맷터와 통합할 수 있습니다. 이러한 도구를 사용하여 코드의 일관성을 유지하고, 리뷰 프로세스를 간소화하며, 코드 품질을 향상시킬 수 있습니다. Spotless는 특히 여러 사람들이 함께하는 프로젝트에서 굉장한 위력을 발휘할 수 있습니다.

 


 

Spotless 적용법

Spotless를 프로젝트에 적용하려면 먼저 `build.gradle` 파일에 Spotless 플러그인을 추가해야 합니다.

id 'com.diffplug.spotless' version '6.21.0' // 상황에 맞는 버전을 사용해주세요!

 


 

Spotless 사용법

Spotless 플러그인은 매우 유연하며, 다양한 포맷터와 통합할 수 있습니다. 예를 들어, Google Java Format을 사용하여 Java 코드를 포맷팅하는 방법은 다음과 같습니다.

// build.gradle
spotless {
    java {
        googleJavaFormat()

        removeUnusedImports()
        trimTrailingWhitespace()
        indentWithSpaces()
        endWithNewline()
    }
}

 

물론 여러가지 부가적인 옵션들을 추가할 수도 있습니다.

spotless {
    java {

        removeUnusedImports() //사용하지 않는 import문 제거
        trimTrailingWhitespace() //공백제거
        indentWithSpaces(n) //n만큼의 스페이스로 들여쓰기, default=2
        indentWithTabs() // 탭으로 들여쓰기
        endWithNewline() // 각 파일의 끝이 새 줄로 끝나기

        importOrder 'java', 'javax', 'org', 'com', 'com.diffplug' // import 순서
    }
}

 

설정을 끝낸 이후 다음과 같은 명령어들을 입력하여 spotless를 적용할 수 있습니다.

 

./gradlew spotlessApply

 


 

특정 파일들에 대해서만 Spotless를 적용하는 방법

특정 디렉토리 또는 파일에만 포맷팅을 적용하려면 `target` 메서드를 사용하여 포맷팅을 적용할 파일을 지정할 수 있습니다. 아래 예제에서는 두 개의 디렉토리에 포맷팅을 적용하는 방법을 보여줍니다:

 

spotless {
    java {
        target fileTree('{디렉토리 경로명}').include('**/*.java'),
        	fileTree('{디렉토리 경로명}').include('**/*.java')
        googleJavaFormat()  

        // 기타 설정 옵션  
        removeUnusedImports()  
        trimTrailingWhitespace()  
        indentWithSpaces()  
        endWithNewline()
    }
}

 

또한, 특정 파일에만 적용할 수도 있습니다.

spotless {
    java {
    /*
     생략
    */
    }

    format 'misc', {
        target '**/*.gradle', '**/*.md', '**/.gitignore'

        trimTrailingWhitespace()
        indentWithTabs()
        endWithNewline()
    }
}

 

profile

일기장

@공군급양

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!