Kotlin 抑制从未使用 Receiver 参数的警告

问题描述 投票:0回答:4

所以,我有一个文件,我在某个类上添加了扩展名。类似的东西

val A.extension
    get = 1+1

我收到警告接收器参数从未使用我想抑制。我尝试了多种疯狂的猜测,例如 @file:Suppress("UNUSED_PARAMETER") 但没有任何效果。

有人知道我要找哪个字符串吗? 问题的第二部分:是否有完整的抑制警告列表? 通常只有硬编码的字符串,我在互联网上找到这些字符串,但没有列出抑制键 - 抑制描述。

编辑:我知道抑制“未使用”可以完成工作,但它太通用了。

编辑2:我想抑制整个文件中的特定警告,我认为它“未使用”太通用了,如果我有 A.extension 并且扩展名从未使用过,我希望它是灰色的(属性未使用),但我不想要A灰色(接收器参数未使用)。

kotlin suppress-warnings
4个回答
3
投票

上面给出的关于使用

@receiver:Suppress("Unused")
的答案确实是最好的解决方案,直到最近的
Android Studio
更新。

我发现

@Suppress("UnusedReceiverParameter")
可以用来达到同样的效果(即抑制接收器参数的使用而不影响函数本身的未使用状态)。就我个人而言,我认为此更改是为了更好,因为它不会干扰函数签名声明。


2
投票

所以,我终于找到了。通过添加注释 @receiver:Suppress("Unused") 可以仅针对接收者抑制某些内容

val @receiver:Suppress("Unused") A.extension
    get = 1+1

如果不使用扩展名,它仍然会显示为灰色。

编辑:我在 V Mircan 回答之前添加了我的回复,但我认为他的注释更好。


1
投票

@Suppress("unused")
是这里使用的最好的东西。它无论如何都不通用。

unused property
只能通过抑制
unused status
来摆脱它的
unused inspection
,没有比这更具体的了。

我认为你犯错误的地方是用

@file:Suppress("UNUSED_PARAMETER")
抑制整个文件中的检查。您需要将抑制添加到扩展本身。这样,它就不会影响文件中的任何其他内容。

例如这里,

A.extension
永远不会说未使用,但如果未使用,则
A.anotherExtension
会这样做。

@Suppress("unused") //comment here if you want to be more explicit
val A.extension
    get() = 1+1

//this one will still say unused if it is unused. 
val A.anotherExtension
    get() = 2+2

0
投票

对于我来说,我用过

@Suppress("UNUSED_ANONYMOUS_PARAMETER")
© www.soinside.com 2019 - 2024. All rights reserved.