자바 코드의 문법 규칙을 만들고 자동으로 처리해주는 linter에 대해서 정리한다.
googlejavaformat
구글에서 제공하는 format이다. 실제 구글에서 사용한다고 한다. intellij에서 설정하여 로컬로 사용할 수 있는데, 자세한 설정 방법은 아래 블로그를 참고하면 된다.
*요약
https://github.com/google/styleguide -> intellij-java-google-style.xml 파일을 다운
환경 설정 -> Editor -> Code Style
Scheme -> Import Scheme -> IntelliJ IDEA code style XML -> 다운받은 xml 파일로 설정
spotless
googlejavaformat을 제공하는 라이브러리로, 다양한 커스터마이징이 가능하다. 다른 개발자들도 googlejavaformat을 지키도록 할 수 있다.
사용방법
gradle, groovy 기준이다. build.gradle 파일의 plugins에 추가하고 apply plugin 항목으로 추가하면 된다. googleJavaFormat() 메서드 및 탭, 스페이스에 의한 indent 설정을 추가해주었다.
plugins {
...
id 'com.diffplug.spotless' version '6.25.0'
}
allprojects {
...
apply plugin: 'com.diffplug.spotless'
...
spotless {
java {
googleJavaFormat()
indentWithTabs(2)
indentWithSpaces(2)
}
}
적용 후에는 아래 명령어를 통해 프로젝트의 코드들을 포매팅 할 수 있다.
./gradlew spotlessJavaApply
더 다양한 옵션은 아래 페이지에서 확인할 수 있다.
https://github.com/diffplug/spotless/tree/main/plugin-gradle
커밋 시 적용하기
커밋 시에 포매팅이 적용되게 할려면 git hook에서 spotless가 실행되게 하면 된다. git hook 중 pre-commit 이라는 단계를 활용하기 위해서 아래 디렉토리에 접근하여 파일을 만든다.
cd .git/hooks/
touch pre-commit
open 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/*
github action에 적용하는 방법은 아래 git repo를 이용하면 되는데, 잘 안되서 향후 작업으로 남겨놓는다.
axel-op/googlejavaformat-action
'Programming-[Backend] > Java' 카테고리의 다른 글
gradle -Build Tools 설정, 서브 모듈, task에 대한 기본적 이해 (1) | 2024.06.02 |
---|---|
자바 기초 강의 정리 - 1. 기초 ~ 함수, 제너릭까지 (0) | 2024.05.26 |
[경험 요약] 자바 테스트 객체 자동으로 만들기: Instancio 라이브러리 (0) | 2024.05.20 |
[TIL][작성Java - @RequestBody null 문제: jackson, @NotNull, @NoArgsConstructor (0) | 2023.06.11 |
[TIL] 클래스 내 private 메서드 임시 테스트 @PostConstruct, Column 이름 예약어 escape 처리 (0) | 2023.05.18 |