IntelliJ 不会根据 ktlint 的期望对 Kotlin 导入进行排序

ysa*_*hno 7 intellij-idea kotlin

当我选择代码时?优化导入或代码?重新格式化代码,IntelliJ确实优化和排序导入,但即使我使用 Kotlin 代码样式的代码样式设置,导入也没有按字典顺序排序(至少不是完全排序)。例如,这是产生的输出:

import com.fasterxml.jackson.databind.ObjectMapper
import io.dropwizard.jackson.Jackson
import io.kotlintest.assertSoftly
import io.kotlintest.matchers.types.shouldBeNull
import io.kotlintest.shouldBe
import io.kotlintest.specs.ShouldSpec
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import org.intellij.lang.annotations.Language
import java.time.Instant // This should not be at the bottom!!!
Run Code Online (Sandbox Code Playgroud)

虽然这是ktlint所期望的:

import com.fasterxml.jackson.databind.ObjectMapper
import io.dropwizard.jackson.Jackson
import io.kotlintest.assertSoftly
import io.kotlintest.matchers.types.shouldBeNull
import io.kotlintest.shouldBe
import io.kotlintest.specs.ShouldSpec
import java.time.Instant // should be here instead
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import org.intellij.lang.annotations.Language
Run Code Online (Sandbox Code Playgroud)

换句话说,java.*无论怎样,格式化程序似乎总是将来自包的导入放在底部。有没有办法使它符合 ktlint 的期望(以及实际上构成字典顺序的内容)?我缺少任何隐藏选项或什么?

我正在使用 IntelliJ IDEA 2019.3.1(终极版)和 Kotlin 插件版本 1.3.61-release-IJ2019.3-1。ktlint 的版本是 0.36.0

Hol*_*r L 12

您可以更改 IntelliJ 对 Kotlin 的导入顺序以满足ktlint

您可以通过删除列表中以外的所有内容来Settings > Editor > Code Style > Kotlin进行更改:Import Layoutimport all other imports

前:

之前的设置

后:

之后的设置


Ale*_*kov 11

这是 Kotlin IDEA 插件中的错误/缺失功能:https : //youtrack.jetbrains.com/issue/KT-10974。请投票。

  • 看起来导入布局功能是为 Kotlin 1.4 设计的,可以通过“.editorconfig”在“[*.{kt,kts}]”等部分中使用“disabled_rules=import-ordering”等配置规则来禁用该规则。 (2认同)