Spotless: 코드 포맷팅 툴

KDG: First things first!·2025년 4월 26일
0

프로젝트

목록 보기
5/5
post-thumbnail




Spotless란?

Spotless: 코드 포맷팅 툴로, 코드 스타일 규칙을 자동으로 적용하여 코드베이스의 일관성을 유지하는 데 도움을 준다.




Spotless 적용


0. build.gradle 설정

build.graldeplugins에 다음 spotelss 설정들을 추가한다.

plugins {
    id 'com.diffplug.spotless' version '6.25.0'
}

// spotless 설정
spotless {
	java {
		target("**/*.java") // 포매팅할 파일의 대상 지정(프로젝트 하위 모든 디렉토리의 .java 파일)
		googleJavaFormat().aosp() // Google Java Format을 사용해서 포매팅(AOSP 스타일은 기본 Google 스타일보다 줄 바꿈을 좀 더 많이 하고, 줄 길이에 더 민감하게 반응함)
		importOrder() // import 문 정리 순서 지정(디폴트 설정(알파벳 순, static import 아래)이 적용)
		removeUnusedImports() // 사용하지 않는 import 구문 제거.
		trimTrailingWhitespace() // 각 라인 끝에 있는 불필요한 공백 제거.
		endWithNewline() // 파일 끝에 빈 줄 한 줄 추가.
	}
}



1. 커밋 시 자동 포맷팅 적용

이제 git commit 명령어로 커밋시 자동으로 spotless가 설정한 포맷팅들을 적용하게 설정해보자.

.git/hooks/pre-commit 파일 생성

커밋 시에 포매팅이 적용되게 할려면 .git파일의 hooks에서 spotless가 자동 실행되게 설정하면 된다. hooks 중 커밋 이전의 단걔인 pre-commit 이라는 단계를 활용하기 위해서 아래 디렉토리에 접근하여 파일을 만든다.


git init 커맨드나 프로젝트를 생성할 때 레포지토리 생성 옵션을 체크해서 .git 파일이 있다는 가정하에 해당 커맨드들을 입력해주자.


cd .git/hooks/  # .git의 hooks 디렉토리로 이동
touch pre-commit  # pre-commit 파일 생성
open pre-commit  # pre-commit 파일 열기

pre-commit 파일에 아래 내용을 붙여넣고 저장해주자.

#!/bin/bash

./gradlew spotlessJavaApply

if [ $? -ne 0 ]; then
  echo "spotlessJavaApply 태스크 실행에 실패"
  exit 1
fi

echo "코드 정리 완료"
exit 0

이후 hook 실행 권한을 부여해주자.

chmod ug+x .git/hooks/*

이제 git commit시 코드 포맷팅이 실행되는 것을 확인할 수 있을 것이다. 만약 spotless에 의해 코드 수정이 이루어졌다면 다시 add-commit을 반복한 후 깃허브에 올리면 된다.




참고 사이트: https://whitepro.tistory.com/952

profile
알고리즘, 자료구조 블로그: https://gyun97.github.io/

0개의 댓글