

Spotless: 코드 포맷팅 툴로, 코드 스타일 규칙을 자동으로 적용하여 코드베이스의 일관성을 유지하는 데 도움을 준다.
build.gralde의 plugins에 다음 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() // 파일 끝에 빈 줄 한 줄 추가.
}
}
이제 git commit 명령어로 커밋시 자동으로 spotless가 설정한 포맷팅들을 적용하게 설정해보자.
커밋 시에 포매팅이 적용되게 할려면 .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