ktlint не проверяет файл kotlin
Я хочу, чтобы мой проект выполнял ktlintCheck для всего файла kotlin, но он проверял только файл build.gradle.kts. build.gradle.kts файл, как показано ниже
ktlint {
version.set("9.4.0")
debug.set(true)
verbose.set(true)
android.set(false)
outputToConsole.set(true)
reporters {
reporter(ReporterType.PLAIN)
reporter(ReporterType.CHECKSTYLE)
}
ignoreFailures.set(false)
kotlinScriptAdditionalPaths {
include(fileTree("src/"))
}
filter {
exclude("**/generated/**")
include("**/kotlin/**")
}
}
subprojects {
apply(plugin = "org.jlleitschuh.gradle.ktlint")
ktlint {
debug.set(true)
}
}
Когда я запускаю gradlew ktlintCheck, вывод терминала выглядит следующим образом:
gradlew ktlintCheck
> Task :ktlintKotlinScriptCheck
[DEBUG] Discovered ruleset with " standard" id.
[DEBUG] Discovered reporter with "checkstyle" id.
[DEBUG] Discovered reporter with "json" id.
[DEBUG] Discovered reporter with "html" id.
[DEBUG] Discovered reporter with "plain" id.
[DEBUG] Initializing "plain" reporter with {verbose=true, color=true, color_name=DARK_GRAY}
[DEBUG] Initializing "plain" reporter with {verbose=true, color=true, color_name=DARK_GRAY}, output=C:\Code\XXXX\build\reports\ktlint\ktlintKotlinScriptCheck\ktlintKotlinScriptCheck.txt
[DEBUG] Initializing "checkstyle" reporter with {verbose=true, color=true, color_name=DARK_GRAY}, output=C:\Code\XXXX\build\reports\ktlint\ktlintKotlinScriptCheck\ktlintKotlinScriptCheck.xml
[DEBUG] Checking C:\Code\XXXX\build.gradle.kts
Resolving .editorconfig files for C:\Code\XXXX\build.gradle.kts file path
[DEBUG] 809ms / 1 file(s) / 0 error(s)
2 ответа
Я столкнулся с аналогичной проблемой и нашел решение, которое сработало для меня. Вы можете попробовать добавить следующую конфигурацию в файл build.gradle в модуле:
android {
// Your existing android configuration
sourceSets {
getByName("main") {
java.srcDir("src/main/kotlin")
}
}
Добавляя эту конфигурацию внутри блока android, вы указываете Gradle рассматривать каталог src/main/kotlin также как каталог исходного кода Java. Таким образом, ktlint сможет правильно проанализировать файлы Kotlin в этом каталоге.
Обязательно синхронизируйте свой проект после добавления этой конфигурации.
Для начала есть ошибка в конфигурации вашего файла build.gradle, в настройках блока Ktlint строка, в которой написано "version.set (" 9.4.0 ")", неверна и не нужна. В любом случае, если вы все же решите использовать этот параметр, это должен быть, например, version.set ("0.37.2"), поскольку он относится к версии Ktlint, а не к плагину jlleitschuh / ktlint-gradle.
Для решения проблемы внесите следующие изменения в файл build.gradle.kts (я использую Gradle 6.6.1 с Kotlin DSL в Intellij IDEA Community Edition)
Пожалуйста, замените плагин предыдущей версией (9.3.0):
файл build.gradle.kts в корневом проекте
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import org.jlleitschuh.gradle.ktlint.reporter.ReporterType // for Ktlint reports
plugins {
kotlin("jvm") version "1.4.10" // Kotlin Compiler
id("org.jetbrains.dokka") version "1.4.10" // Documentation Engine For Kotlin
id("org.jlleitschuh.gradle.ktlint") version "9.3.0" // Kotlin Linter
}
group = "my group" // Replace with your group
version = "1.0-SNAPSHOT"
repositories {
mavenCentral()
jcenter()
}
dependencies {
implementation("org.junit.jupiter:junit-jupiter:5.4.2")
testImplementation(kotlin("test-junit5"))
implementation(kotlin("stdlib-jdk8"))
}
tasks.withType<KotlinCompile> {
kotlinOptions.jvmTarget = "1.8"
}
tasks.test {
useJUnitPlatform()
}
val compileKotlin: KotlinCompile by tasks
compileKotlin.kotlinOptions {
jvmTarget = "1.8"
}
val compileTestKotlin: KotlinCompile by tasks
compileTestKotlin.kotlinOptions {
jvmTarget = "1.8"
}
ktlint {
// THIS LINE IS NOT necessary and is incorrect -> version.set("9.4.0")
verbose.set(true)
outputToConsole.set(true)
coloredOutput.set(true)
debug.set(false) // in your configuration this option must be set to true
android.set(false)
outputColorName.set("RED")
ignoreFailures.set(false)
enableExperimentalRules.set(false)
reporters {
reporter(ReporterType.CHECKSTYLE)
reporter(ReporterType.JSON)
reporter(ReporterType.HTML)
}
filter {
exclude("**/style-violations.kt")
exclude("**/generated/**")
include("**/kotlin/**")
}
}