Как добавить стиль KtLint в Android Studio с помощью Gradle?
Я хочу добавить стиль ktlint
используется в Android Studio, поэтому, когда я сам применяю форматирование, он использует ktlint
стиль.
Исходя из документации, я установил ktlint
CLI
brew install ktlint
Затем я перешел в корень своего проекта и выполнил
ktlint --android applyToIDEAProject
Теперь этот стиль отображается в моих предпочтениях для использования.
Проблема в том, что стиль, применяемый через интерфейс командной строки, использует то, что я считаю последней версией ktlint
поскольку мое ручное форматирование отличается от форматирования Gradle
задача. Я бы предпочел, чтобы он использовал стиль из Gradle
плагин, чтобы стиль, примененный к проекту, был таким же, как Gradle
задача использует при форматировании.
Наконец, я хотел бы, чтобы это была задача Gradle, чтобы другие разработчики могли импортировать и применять тот же стиль, что и я, создавая ловушку.
Ниже мой файл Gradle 'ktlint'
dependencies {
ktlint "com.pinterest:ktlint:0.34.2"
}
task ktlint(type: JavaExec, group: "verification") {
description = "Check Kotlin code style."
classpath = configurations.ktlint
main = "com.pinterest.ktlint.Main"
args "src/**/*.kt"
}
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"
}
ОБНОВЛЕНИЕ 1
Я заглянул в один из доступных плагинов Gradle и увидел этот файл. Для меня это похоже на оболочку вокруг основной библиотеки, поэтому это должно быть возможно без использования стороннего плагина. https://github.com/JLLeitschuh/ktlint-gradle/blob/master/plugin/src/main/kotlin/org/jlleitschuh/gradle/ktlint/KtlintApplyToIdeaTask.kt
Я использовал версию 0.34.2, и, сравнивая ее с последней, похоже, что поддержка этих команд была добавлена позже, как показано здесь https://github.com/pinterest/ktlint/blob/master/ktlint/src/main/kotlin/com/pinterest/ktlint/Main.kt
Исходя из этой информации, я добавил эту задачу Gradle, которая продвинулась у меня, но все еще не работает.
task addKtLintStyle(type: JavaExec, group: "formatting") {
description = "yep"
classpath = configurations.ktlint
main = "com.pinterest.ktlint.Main"
args "--android", "applyToIDEA"
}
Ошибка с этой ошибкой
.idea directory not found. Are you sure you are inside project root directory?
Которая брошена сюда
Мой файл gradle находится в корне моего проекта, поэтому я не уверен, что делать дальше на этом этапе.
1 ответ
Мне удалось заставить это работать. Это было окончательное определение задачи
task addKtLintStyle(type: JavaExec, group: "formatting") {
description = "Adds The KtLint Style To Your IDE"
classpath = configurations.ktlint
main = "com.pinterest.ktlint.Main"
args "--android", "applyToIDEA", "-y"
//Point to the root directory because this task needs access to the .idea directory
workingDir(getRootDir())
}
Обратите внимание на линию
//Point to the root directory because this task needs access to the .idea directory
workingDir(getRootDir())
а также
args "--android", "applyToIDEA", "-y"
В -y
просто принимает примененный стиль.
После перезапуска Android Studio я вижу ktlint
стиль