Как добавить стиль KtLint в Android Studio с помощью Gradle? - PullRequest
0 голосов
/ 03 февраля 2020

Я хочу добавить стиль ktlint, используемый в Android Studio, чтобы при самостоятельном применении форматирования использовался стиль ktlint.

На основании документации я установил ktlint CLI

brew install ktlint 

Затем я перешел к root моего проекта и выполнил

ktlint --android applyToIDEAProject

Стиль теперь отображается в моих настройках для использования.

Проблема заключается в том, что стиль, применяемый через CLI, использует, как мне кажется, последнюю версию 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#L49

Из этой информации я добавил эту задачу 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? 

Который выдается здесь

https://github.com/pinterest/ktlint/blob/master/ktlint/src/main/kotlin/com/pinterest/ktlint/internal/ApplyToIDEACommandHelper.kt#L27

Мой файл Gradle находится в root моего проекта, поэтому я не уверен, что делать дальше на этом этапе.

1 Ответ

0 голосов
/ 17 марта 2020

Мне удалось заставить это работать. Это было окончательное определение задачи

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

...