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

ktlint v1.5.0报“Unexpected newline before '.'”错误,配置无效求助

ktlint 1.5.0 中Unexpected newline before '.'错误的解决办法

这段代码里,.block()所在行被ktlint抛出Unexpected newline before '.'错误:

tokenCredential
    .getToken(
        TokenRequestContext()
            .addScopes("https://management.core.windows.net/.default"),
    )
    .block() != null

升级到ktlint v1.5.0后就出现这个问题,试了各种chain-wrapping规则的配置(不管是在.editorconfig还是build.gradle.kts里调整取值)都没用。

问题根源

你之前调整的chain-wrapping规则和这个报错没关系——这个错误是dot-placement规则触发的。ktlint默认要求链式调用的点(.)必须放在上一行的末尾,不能单独放在下一行开头,而你的代码习惯是把点放在换行后的行首,所以触发了规则检查。

解决办法

方式1:修改.editorconfig配置

在.editorconfig的[*.kt,*.kts]区块里加下面的配置,允许点出现在换行后的行首:

[*.kt,*.kts]
ktlint_standard_dot-placement = newline

要是想直接禁用这个规则,就改成:

ktlint_standard_dot-placement = disabled

方式2:在build.gradle.kts里配置

在ktlint扩展中添加对应配置项:

ktlint {
    additionalEditorconfig.set(
        mapOf(
            "ktlint_standard_dot-placement" to "newline" // 也可以填"disabled"
        ),
    )
}

可选:调整代码格式适配默认规则

如果不想改配置,也可以按ktlint的默认要求调整代码,把点移到上一行末尾:

tokenCredential.
    getToken(
        TokenRequestContext().
            addScopes("https://management.core.windows.net/.default"),
    ).
    block() != null

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 23:31:03