Sey*_*bol 5 java spring kotlin detekt
最近,我在我的应用程序中添加了Detekt分析器。
在我运行 detekt (./gradlew detekt) 后,我在我的主应用程序类中收到了 SpreadOperator 警告。
代码警告: runApplication<MessCallsApplication>(*args)
您可以在此处阅读有关 SpreadOperator 警告的信息: [SpreadOperator Warning][2]
我的主要课程:
@SpringBootApplication(exclude = [RedisAutoConfiguration::class])
@EnableCircuitBreaker
@EnableScheduling
class MyApplication {
companion object : KLogging()
}
fun main(args: Array<String>) {
Thread.setDefaultUncaughtExceptionHandler { _, exception ->
MessCallsApplication.logger.error(exception) { "Uncaught exception" }
}
runApplication<MessCallsApplication>(*args)
}
Run Code Online (Sandbox Code Playgroud)
问题是,摆脱 SpreadOperator 警告的最佳做法是什么?或者是不可能的?
pix*_*xel 11
在您的具体情况下:
runApplication<MessCallsApplication>(args = args)
Run Code Online (Sandbox Code Playgroud)
编辑:
此 detekt 警告不再是一个案例: https://github.com/detekt/detekt/pull/3157
然而,正如 Klitos Kyriacou 在代码中提到的那样 - 该数组被复制(甚至两次!)。反编译字节码:
public final class MessCallsApplicationKt {
public static final void main(@NotNull String[] args) {
Intrinsics.checkNotNullParameter(args, "args");
Schedulers.enableMetrics();
String[] args$iv = (String[])Arrays.copyOf(args, args.length);
int $i$f$runApplication = false;
Intrinsics.checkExpressionValueIsNotNull(SpringApplication.run(MessCallsApplication.class, (String[])Arrays.copyOf(args$iv, args$iv.length)), "SpringApplication.run(T::class.java, *args)");
}
}
Run Code Online (Sandbox Code Playgroud)
小智 8
@Suppress("SpreadOperator")您可以在表达式之前添加如下内容:
@SpringBootApplication(exclude = [RedisAutoConfiguration::class])
@EnableCircuitBreaker
@EnableScheduling
class MyApplication {
companion object : KLogging()
}
fun main(args: Array<String>) {
Thread.setDefaultUncaughtExceptionHandler { _, exception ->
MessCallsApplication.logger.error(exception) { "Uncaught exception" }
}
@Suppress("SpreadOperator")
runApplication<MessCallsApplication>(*args)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1754 次 |
| 最近记录: |