1. 환경 설정
가. 스타일 기본 설정
1) 플러그인 설정
•
IntelliJ에 Ktlint 플러그인을 설정하는 방법은 아래와 같이 간단합니다. 이하 예제에서는 22년 12월 9일 기준 최신버전(v11.0.0)으로 플러그인을 설정했습니다. 다음의 공식문서에서 더 자세한 설정법을 찾을 수 있습니다.
// build.gradle.kts
plugins {
id("org.jlleitschuh.gradle.ktlint") version "11.0.0"
}
Kotlin
복사
2) 코틀린 공식 스타일 설정
•
코틀린 공식문서(v1.7.21)에 따르면 IDE에 종속되지 않고 코틀린 공식 스타일을 적용하기 위해 아래와 같은 설정을 추가할 것을 권장합니다.
// gradle.properties
kotlin.code.style=official
Kotlin
복사
나. 스타일 명세 추가 설정
•
코틀린 공식 스타일에 생략된 부분은 .editorconfig에서 설정할 수 있습니다.
•
코틀린 공식 스타일에는 EOF 관련 설정이 없습니다. 따라서 모든 파일 대상으로 POSIX 표준을 맞추기 위해 끝 개행문자를 추가 설정할 수 있습니다.
•
후행쉼표(trailing comma)의 경우, 코틀린 공식 스타일에서 권장사항이지만 IDE 차원에서 스타일 체크를 강제하기 때문에 모든 코틀린 파일 대상으로 아래와 같이 비활성화할 수 있습니다.
# .editorconfig
root = true
[*]
# 파일 끝 개행문자 추가
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
[*.{kt,kts}]
ktlint_standard_no-wildcard-imports = disabled
# 후행쉼표 제약 비활성화
ij_kotlin_allow_trailing_comma = false
ij_kotlin_allow_trailing_comma_on_call_site = false
Plain Text
복사
다. IntelliJ 기반 스타일 체크 설정
•
아래 절차에 따라 IntelliJ 기반으로 스타일 체크 환경을 구성할 수 있습니다.
1. IntelliJ IDEA 상단 메뉴에서 [IntelliJ IDEA] - [Settings]를 클릭한다.
2. 왼쪽 패널에서 [Plugins]를 선택한다.
3. 오른쪽 패널에서 [Marketplace] 탭을 클릭한다.
4. 마켓플레이스 검색창에 "ktlint"를 입력하고, 검색 결과 중 "ktlint"를 선택한다.
5. [Install] 버튼을 클릭하여 플러그인을 설치한다.
6. [IntelliJ IDEA] - [Settings] - [Tools] - [ktlint]에서 이하 참고에 따라 “Run ktlint --format on save”에 체크한다.
7. IntelliJ IDEA를 다시 시작한다.
Plain Text
복사
참고) [IntelliJ IDEA] - [Preferences] - [Tools] - [ktlint] 설정 스크린샷
2. 스타일 체크 사용법
가. 기본 사용법
1) 스타일 체크
•
명령: ./gradlew ktlintCheck
•
결과
: 빌드 대상 코드가 스타일 명세를 만족할 경우
: 스타일 명세를 불만족할 경우
2) 스타일 명세에 따라 자동 맞춤
•
명령: ./gradlew ktlintFormat
•
결과
: 빌드 대상 코드가 모두 자동 변경 또는 모든 스타일 명세를 만족할 경우
: 자동으로 변경할 수 없는 스타일 요소가 있는 경우
나. Commit 단계 자동 체크
•
pre-commit hook을 활용하여 commit 단계에서 자동으로 스타일 체크를 할 수 있습니다.
•
예시는 pre-commit이지만 유사하게 pre-push로도 설정할 수 있습니다.
•
hook 설정 명령: ./gradlew addKtlintCheckGitPreCommitHook
•
결과
: 빌드 대상 코드가 스타일 명세를 만족할 경우
: 스타일 명세를 불만족한 상태에서 commit을 시도하는 경우
다. CI 단계 스타일 강제
•
GitHub Actions 기반으로 CI가 구성되어 있다면 코드 스타일 명세를 아래와 같이 강제할 수 있습니다.
•
이하 Github Actions Script에서 Check Style 이름의 Step 참고
# GitHub Actions Workflow
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: git checkout
uses: actions/checkout@v3
- name: Set up JDK 11
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'temurin'
cache: gradle
- name: Check Style
uses: ScaCap/action-ktlint@master
with:
github_token: ${{ secrets.github_token }}
reporter: github-pr-check
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build with Gradle
run: ./gradlew build
YAML
복사
3. 설정 이슈 대응
가. Linter 빌드 실패
1) 상황
•
./gradlew ktlintCheck 명령 시 이하 이미지와 같은 에러 발생
2) 원인
•
ktlint 내부 원인
3) 해결
•
ktlint version up(9.1.0 → 10.2.0)
나. gradle-wrapper.jar 누락 이슈
1) 상황
•
./gradlew ktlintCheck 명령 시 이하 이미지와 같은 에러 발생
2) 원인
•
gradle wrapper 실행파일 부재
3) 해결
•
gradle wrap 명령에 따라 부재 파일 생성
참고
•
본 포스팅에 언급된 모든 설정은 다음의 샘플 프로젝트에 적용되어 있음, https://github.com/MJbae/kotlin-practice/tree/style/linter-setting
•
EditorConfig 공식문서, https://editorconfig.org/