전체 보기
🍀

build.gradle에 코드 포매팅 적용 (with editorconfig)

작성일자
2024/07/29
태그
DIARY_DEVELOP
프로젝트
WoowaCourse
책 종류
1 more property

editorconfig-gradle-plugin 에 대해 알아보자

정의) .editorconfig 파일에 정의된 형식 규칙을 준수하는지 여부를 확인하고, 위반 사항을 수정하기 위한 Gradle 플러그인
기본 사용)
전제조건) Java 8+ 과 Gradle 4.1+ 에 사용 가능
1.
플러그인 추가
plugins { ... // Check the latest version at https://plugins.gradle.org/plugin/org.ec4j.editorconfig id 'org.ec4j.editorconfig' version '...' }
JSON
복사
2.
소스 파일이 .editorconfig 규칙을 준수하는지 확인 (.editorconfig 파일 있어야 함)
./gradlew editorconfigCheck // 소스 파일이 .editorconfig 규칙을 준수하는지 확인 ./gradlew editorconfigFormat // 위반 사항 자동으로 수정
Groovy
복사
3.
또는 editorconfigCheck task를 프로젝트의 다른 task에 바인딩
ex. Java 플러그인이 있다면 check 작업에 바인딩하는 것이 자연스러움
plugins { id 'java' id 'org.ec4j.editorconfig' version '...' } check.dependsOn editorconfigCheck
Groovy
복사
추가 설정)
.editorconfig 확장 객체 이용해 설정
editorconfig { # 기본적으로 모든 파일이 포함됩니다. 경로 또는 패턴은 프로젝트 루트 디렉터리를 기준으로 해야 합니다. includes = ['src/**', 'build.gradle'] # 기본 제외 항목 외에도 몇몇 파일을 제외합니다.경로 또는 패턴은 프로젝트 루트 디렉터리를 기준으로 해야 합니다. excludes = ['derby.log', 'LICENSE'] }
Groovy
복사
동작 과정)
editorconfig-gradle-pluginorg.ec4j.maven:ec4j-lint-apiorg.ec4j.maven:ec4j-linters 라이브러를 사용함
두 라이브러리는 Linter 인터페이스를 중심으로 설계됨
Linter는 특정 파일 형식(YAML 또는 XML 등)에 대해 .editorconfig 속성이 만족되는지 여부를 감지하고, 필요한 경우 자동으로 적용 가능한 수정을 제안하는 프로세서임

자바 파일에 대해 .editorconfig 규칙 설정하기

1.
.editorconfig 파일에서 자바 파일에 대한 형식 규칙을 정의
ex 1_간단 버전) naver/hackday-conventions-java 그대로 사용
root = true [*] indent_style = space indent_size = 4 end_of_line = lf charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true [*.java] indent_style = space indent_size = 4
Groovy
복사
ex 2_커스텀 버전) intellij-java-wooteco-style.xml 을 editorconfig로 변환한 결과
editorconfig
58.8KB
intellij-java-wooteco-style.xml을 적용한 후 추출함
Settings > Editor > Code Style > 톱니바퀴 > Import Schema > IntelliJ IDEA code style XML > 다운로드해둔 WootecoStyle 파일 선택해 적용 > OK
Settings > Editor > Code Style > 톱니바퀴 > Export > EditorConfig
위 방식과 같이 인텔리제이의 export 기능을 이용해 어떤 코드 스타일이든 쉽게 EditorConfig 파일로 생성 가능함
주의할 점으론 빈 값이 들어간 건 오류를 일으키기에 수동으로 해당 라인을 지워줘야 한단 점이 있음
ex. Property 'ij_visual_guides' has no value at 14:20 (318)
2.
자바 프로젝트에 .editorconfig 규칙 검사를 추가하고, check 작업에 의존하도록 설정
// build.gradle plugins { id 'java' id 'org.ec4j.editorconfig' version '...' } editorconfig { includes = ['src/**/*.java', 'build.gradle'] // 자바 파일과 build.gradle 파일을 포함 excludes = ['build/**', 'out/**'] // 빌드 및 출력 디렉터리 제외 } check.dependsOn editorconfigCheck
Groovy
복사

Reference

editorconfig-gradle-plugin
ec4j