4

尝试./gradlew spotlessApply在 Kotlin 中运行我的项目时,我遇到了奇怪的异常。

导致问题的类:

import io.realm.RealmObject
import io.realm.annotations.PrimaryKey

open class CurrentFluttering(
    @PrimaryKey var id: Long = 0,
    var currentCoinsHeap: Int = 0,
    var currentEarnedCoins: Int = 0,
    var startTime: Long = 0,
    var pauseTime: Long = 0,
    var time: Long = 0,
    var firstCycle: Boolean = true,
    var inBackground: Boolean = false,
    var currentMissedCoins: Int = 0,
    var isPaused: Boolean = false,
) : RealmObject()

堆栈跟踪:

> Task :spotlessKotlin FAILED
Step 'ktlint' found problem in 'app/src/main/java/com/cfhero/android/model/state/CurrentFluttering.kt':
Expecting a parameter declaration
com.pinterest.ktlint.core.ParseException: Expecting a parameter declaration
        at com.pinterest.ktlint.core.KtLint.format(KtLint.kt:357)
        at sun.reflect.GeneratedMethodAccessor35.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at com.diffplug.spotless.kotlin.KtLintStep$State.lambda$createFormat$1(KtLintStep.java:173)
        at com.diffplug.spotless.FormatterFunc.apply(FormatterFunc.java:31)
        at com.diffplug.spotless.FormatterStepImpl$Standard.format(FormatterStepImpl.java:78)
        at com.diffplug.spotless.FormatterStep$Strict.format(FormatterStep.java:76)
        at com.diffplug.spotless.Formatter.compute(Formatter.java:230)
        at com.diffplug.spotless.Formatter.applyToAndReturnResultIfDirty(Formatter.java:192)
        at com.di

有没有人遇到过相同或类似的问题?

4

2 回答 2

13

我找到了。问题是在构造函数中的最后一个参数(Kotlin 允许)之后悬挂 ','。

var isPaused: Boolean = false, <- here ლ(ಠ益ಠლ)
) : RealmObject()
于 2021-01-19T12:43:57.650 回答
2

这是由于插件使用的默认 ktlint 版本造成的。到目前为止,它private static final String DEFAULT_VERSION = "0.35.0"不支持尾随逗号,尽管 kotlin 1.4 支持。事实上,他们已经将其更新到0.40.0某个时间点,但遇到了一些格式问题,最终恢复了更改。

如果您愿意,您可以手动指向最新版本,例如

spotless {
    kotlin {
        target '**/*.kt'
        ktlint("0.40.0")
    }
}

于 2021-01-22T05:01:43.953 回答