editorconfig-gradle-plugin 에 대해 알아보자
•
정의) .editorconfig 파일에 정의된 형식 규칙을 준수하는지 여부를 확인하고, 위반 사항을 수정하기 위한 Gradle 플러그인
•
기본 사용)
◦
전제조건) Java 8+ 과 Gradle 4.1+ 에 사용 가능
1.
플러그인 추가
•
https://plugins.gradle.org/plugin/org.ec4j.editorconfig 에서 최신버전 확인 가능
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-plugin은 org.ec4j.maven:ec4j-lint-api와 org.ec4j.maven:ec4j-linters 라이브러를 사용함
◦
두 라이브러리는 Linter 인터페이스를 중심으로 설계됨
◦
Linter는 특정 파일 형식(YAML 또는 XML 등)에 대해 .editorconfig 속성이 만족되는지 여부를 감지하고, 필요한 경우 자동으로 적용 가능한 수정을 제안하는 프로세서임
자바 파일에 대해 .editorconfig 규칙 설정하기
1.
.editorconfig 파일에서 자바 파일에 대한 형식 규칙을 정의
•
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
복사
•
◦
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
복사