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
相关产品推荐
相关产品推荐

