Kotlin > ktlint 설정
플러그인
ktlint 플러그인을 사용하는 경우 버전 맞추기
gradle 설정
이번에는 플러그인에 맞추어 0.42.0을 넣습니다.
※ 공식 페이지 그럼 플러그인으로의 사용을 추천 되고 있습니다만,
이번에는 ktlint의 버전을 명시적으로 지정하고 싶었기 때문에 ↓의 방법을 취하고 있습니다.
build.gradle의 경우
pinterest/ktlint: An anti-bikeshedding Kotlin linter with built-in formatter
build.gradle
build.gradle
// kotlin-gradle-plugin must be applied for configuration below to work
// (see https://kotlinlang.org/docs/reference/using-gradle.html)
apply plugin: 'java'
repositories {
mavenCentral()
}
configurations {
ktlint
}
dependencies {
ktlint("com.pinterest:ktlint:0.42.0") {
attributes {
attribute(Bundling.BUNDLING_ATTRIBUTE, getObjects().named(Bundling, Bundling.EXTERNAL))
}
}
// additional 3rd party ruleset(s) can be specified here
// just add them to the classpath (e.g. ktlint 'groupId:artifactId:version') and
// ktlint will pick them up
}
task ktlint(type: JavaExec, group: "verification") {
description = "Check Kotlin code style."
classpath = configurations.ktlint
main = "com.pinterest.ktlint.Main"
args "src/**/*.kt"
// to generate report in checkstyle format prepend following args:
// "--reporter=plain", "--reporter=checkstyle,output=${buildDir}/ktlint.xml"
// to add a baseline to check against prepend following args:
// "--baseline=ktlint-baseline.xml"
// see https://github.com/pinterest/ktlint#usage for more
}
check.dependsOn ktlint
task ktlintFormat(type: JavaExec, group: "formatting") {
description = "Fix Kotlin code style deviations."
classpath = configurations.ktlint
main = "com.pinterest.ktlint.Main"
args "-F", "src/**/*.kt"
}
build.gradle.kts의 경우
build.gradle.kts
공식 페이지 README 편집 중입니다. 변경점은 다음과 같습니다.
@Suppress("UNUSED_VARIABLE")
추가 JavaExec setMain is deprecated · Issue #1184 · pinterest/ktlint
build.gradle.kts
val ktlint by configurations.creating
dependencies {
ktlint("com.pinterest:ktlint:0.42.0") {
attributes {
attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling.EXTERNAL))
}
}
// ktlint(project(":custom-ktlint-ruleset")) // in case of custom ruleset
}
val outputDir = "${project.buildDir}/reports/ktlint/"
val inputFiles = project.fileTree(mapOf("dir" to "src", "include" to "**/*.kt"))
@Suppress("UNUSED_VARIABLE")
val ktlintCheck by tasks.creating(JavaExec::class) {
inputs.files(inputFiles)
outputs.dir(outputDir)
group = "ktlint"
description = "Check Kotlin code style."
classpath = ktlint
mainClass.set("com.pinterest.ktlint.Main")
args = listOf("src/**/*.kt")
}
@Suppress("UNUSED_VARIABLE")
val ktlintFormat by tasks.creating(JavaExec::class) {
inputs.files(inputFiles)
outputs.dir(outputDir)
group = "ktlint"
description = "Fix Kotlin code style deviations."
classpath = ktlint
mainClass.set("com.pinterest.ktlint.Main")
args = listOf("-F", "src/**/*.kt")
}
build.gradle.kts의 경우의 예입니다.
Gradle에 ktlint 그룹이 생성되어 ktlint를 실행할 수 있습니다.
Actions
.github/workflows/ktlintchecker.yml
Action에도 ktlint 체크를 넣습니다.
name: reviewdog
on: [pull_request]
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.github_token }}
reporter: github-pr-review # Change reporter
커밋 전에 Ktlint 확인
command line판의 ktlint 넣기
brew install ktlint
ktlint --version
이전 버전을 넣는 경우
brew는 최신 버전 만 유지하는 정책
이전 버전을 넣으려면 다음 방법을 사용하십시오. 이번에는 플러그인에 맞추어 0.42.0을 넣는다.
참고 : Homebrew에서 과거 버전을 사용하고 싶은 【tap판】 - Carpe Diem
brew uninstall ktlint
brew tap-new jun06t/taps
brew extract ktlint jun06t/taps --version 0.42.0
brew install jun06t/taps/[email protected]
brew link [email protected]
사전 커밋 도입
brew install pre-commit
pre-commit --versionß
다음과 같이 표시되면
xcode-select --install
Error: [email protected]: the bottle needs the Apple Command Line Tools to be installed.
You can install them, if desired, with:
xcode-select --install
xcode
xcode-select --install
pre-commit-hook 만들기
프로젝트 루트에서 다음을 수행합니다.
ktlint --install-git-pre-commit-hook
.git/hooks/
아래에 pre-commit
가 생성됨사전 커밋
#!/bin/sh
# https://github.com/shyiko/ktlint pre-commit hook
git diff --name-only --cached --relative | grep '\.kt[s"]\?$' | xargs ktlint --relative .
if [ $? -ne 0 ]; then exit 1; fi
이제 Commit 때마다 ktlint가 실행됩니다.
이상
Reference
이 문제에 관하여(Kotlin > ktlint 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sugasaki/items/7dc739e6b83db72d5577텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)