ktlint github action & intelliJ 적용하기

jaycee·2023년 11월 7일
0

ktlint 기준 1.0.1 버전 사용 시 ktlint 적용 방법

1. github action에 코틀린 적용

name: ktlint

on:
  pull_request:
    branches:
      - dev
jobs:
  ktlint:
    name: Check Code Quality
    runs-on: ubuntu-latest

    steps:
      - name: Clone repo
        uses: actions/checkout@master
        with:
          fetch-depth: 1
      - name: ktlint
        uses: ScaCap/action-ktlint@master
        with:
          github_token: ${{ secrets.KTLINT_REVIEW_DOG_GITHUB_TOKEN }}
          reporter: github-pr-check # Change reporter

2. .editorconfig 파일 설정

root = true

[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 4
max_line_length = 250
trim_trailing_whitespace = true

[{*.kts,*.kt}]
ij_kotlin_name_count_to_use_star_import = unset
ij_kotlin_name_count_to_use_star_import_for_members = unset
ij_kotlin_allow_trailing_comma = true
ij_kotlin_allow_trailing_comma_on_call_site = true
ij_kotlin_imports_layout=*,java.**,javax.**,kotlin.**,^ #인텔리J 기준 기본 import

[*.md]
trim_trailing_whitespace = false

[*.{yml,yaml}]
indent_size = 2
  • import 선언 순서 오류인 import-ordering 항목을 자꾸 통과못해서 diabled 시킬 수 있는 방법을 찾다 결국 찾지 못했는데, import optimizing( O)하게 되면 .editorconfig파일에 ij_kotlin_imports_layout 항목에 설정된 순서대로 자동으로 정렬해주므로 한번만 지정해주면 된다.
  • 다른 블로그에서는 disabled_rules = no-wildcard-imports, import-ordering, comment-spacing 항목을 쓰는 것으로 되어있는데, 0.49버젼부터 deprecated 되었음. disabled_rule 옵션 사용하고 ktlint 검사 시 아래와 같은 경고를 출력함.
WARN com.pinterest.ktlint.rule.engine.internal.RuleExecutionContext - Editorconfig property 'disabled_rules' is obsolete and is not used by KtLint starting from version 0.49. Remove the property from all '.editorconfig' files.

3. kotlin 설치 및 실행

(mac os brew 기준)

설치

brew install ktlint  

실행

ktlint "src/**/*.kt"

주의사항

IDE의 ktlint와 github action의 ktlint 버젼을 일치시켜야 함.

ktlint --version    

github action에선 해당 스탭에 가보면 아래와 같이 확인 가능 - 룰이나 버젼이 자동으로 업데이트 되는 최신 버전의 rule 정보를 주입받을 수 있으므로 갑자기 검출이 될 수도 있다.

더 할 일

commit 전에 검사하는 방법을 찾아보자.

profile
오늘도 하나 배웠다.

0개의 댓글