You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spotless 6.19.0版本下如何禁用standard:no-wildcard-imports规则?

解决Spotless+ktlint允许通配符导入的配置问题

我是Spotless和ktlint的新手,正尝试将它们接入我的项目,基础配置操作较为简单,但我希望允许通配符导入——这是一个常见需求。不过当前配置无法实现该功能:

项目Gradle配置

plugins {
id("com.android.application") version "8.1.4" apply false
id("org.jetbrains.kotlin.android") version "1.9.10" apply false
id("com.google.dagger.hilt.android") version "2.48.1" apply false
id("com.google.devtools.ksp") version "1.9.10-1.0.13" apply false
id("com.diffplug.spotless") version "6.19.0" apply false

}

subprojects {
    apply(plugin = "com.diffplug.spotless")

    configure<com.diffplug.gradle.spotless.SpotlessExtension> {
        kotlin {
            target("**/*.kt")
            ktlint().setEditorConfigPath("$projectDir/../.editorconfig")
            targetExclude("$buildDir/**/*.kt")
            licenseHeaderFile(rootProject.file("spotless/copyright.kt"))
        }
        kotlinGradle {
            target("*.gradle.kts")
            ktlint()
        }
    }
    afterEvaluate {
        tasks.named("preBuild") {
            dependsOn("spotlessApply")
        }
    }
}

.editorconfig配置

root = true

[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = false

[*.{java,kt,kts,xml}]
indent_size = 4
max_line_length = 200

[*.{kt,kts}]
ij_kotlin_allow_trailing_comma = true
ij_kotlin_allow_trailing_comma_on_call_site = true
ij_kotlin_packages_to_use_import_on_demand = disabled

我尝试过设置disabled、false、unset,但均无效,始终出现如下错误:

Error on line: 3, column: 1
rule: standard:no-wildcard-imports
Wildcard import

问题原因

你使用的ij_kotlin_packages_to_use_import_on_demand是IntelliJ IDEA的专属配置项,ktlint并不识别该参数,所以无论设置什么值都无法生效。报错中的standard:no-wildcard-imports是ktlint内置的规则,需要直接针对该规则进行禁用配置。

解决方案

方案一:修改.editorconfig文件

在.editorconfig的[*.{kt,kts}]区块中添加ktlint规则禁用配置:

[*.{kt,kts}]
ij_kotlin_allow_trailing_comma = true
ij_kotlin_allow_trailing_comma_on_call_site = true
ktlint_standard_no-wildcard-imports = disabled

方案二:在Spotless的Gradle配置中直接禁用规则

如果不想修改.editorconfig,可以在Spotless的ktlint配置中添加规则排除:

kotlin {
    target("**/*.kt")
    ktlint()
        .setEditorConfigPath("$projectDir/../.editorconfig")
        .disableRule("no-wildcard-imports") // 添加这一行
    targetExclude("$buildDir/**/*.kt")
    licenseHeaderFile(rootProject.file("spotless/copyright.kt"))
}

两种方案任选其一即可解决问题,允许代码中使用通配符导入。

内容的提问来源于stack exchange,提问作者a_local_nobody

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 18:43:17