Programming-[Backend]/Java

자바 linter, 포매팅 처리 : spotless, googlejavaformat, commit시 자동 적용

컴퓨터 탐험가 찰리 2024. 5. 26. 09:45
728x90
반응형

 

자바 코드의 문법 규칙을 만들고 자동으로 처리해주는 linter에 대해서 정리한다.

 

 

googlejavaformat

구글에서 제공하는 format이다. 실제 구글에서 사용한다고 한다. intellij에서 설정하여 로컬로 사용할 수 있는데, 자세한 설정 방법은 아래 블로그를 참고하면 된다.

https://velog.io/@ppinkypeach/IntelliJ%EC%97%90-Google-Java-Style-format-%EC%A0%81%EC%9A%A9%ED%95%98%EA%B8%B0

 

*요약

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

728x90
반응형