Scala中有相当于SuppressWarnings的内容吗?

Ben*_*man 52 scala suppress-warnings

我想知道scala是否有相当于java的@SuppressWarnings可以应用于函数或任何忽略函数发出的任何弃用警告[1]?

1:在我的情况下的相关警告是:method stop in class Thread is deprecated: see corresponding Javadoc for more information.我知道停止的问题,但仍有一些情况由于遗留代码我们必须使用它.

ret*_*nym 26

不,并且关闭此类功能的增强请求[1] wontfix.

我同意它会有用.我希望Scala核心团队不反对这个想法,但他们拥有有限的资源和更高的优先级.

[1] https://issues.scala-lang.org/browse/SI-1781

  • @Ichthyo你说的理论很好,但在实践中却不是这样.警告在这里只是提示,它们通常是*误报*,即使在Scala中(否则它们将是错误!).如果出现误报,最好添加一条评论,说明为何如此,并禁用它.否则它会污染项目报告,并使*真实警告*显示不太明显*可能会对程序的安全性产生真正的威胁*! (38认同)
  • @Ichthyo我很抱歉,如果我冒犯了你; 不是我的意图.我不确定你的意思是"显然缺乏淹没在警告中的巨大而长期代码库的经验".我确实在这些项目上工作(授予,而不是Scala;它是C++).删除这些警告(无论是否由实际问题引起)确实是一个优先事项.我想每个项目和相关政策都是不同的.我的观点是,在某些情况下,在特定地方隐藏特定警告,保持其他一切简单和连贯是合理的. (13认同)
  • 可惜.无法区分好警告和坏警告使得它们在大型项目的构建报告中几乎无用. (8认同)
  • 该请求是针对`@unchecked`注释的.OP关注的是弃用警告,而不是不安全的投射警告. (4认同)
  • 咳咳。不存在所谓的“好的”警告。警告是一个现在不会杀死你,但明天可能会杀死你的问题。正因为 Java 是一种很糟糕的语言,所以我们养成了忽略警告的坏习惯。 (2认同)
  • 尽管已关闭,但它最终还是及时实现了 Scala 2.13.2。 (2认同)

ghi*_*hik 22

有一个简单的编译器插件:消音器(有点无耻插头)

  • @Simon“无耻的插件”,因为他是插件的作者。 (3认同)

Mar*_*lic 15

Scala 2.13.2 提供@nowarn了在 ghik 的基础上开发的注解silencer,例如

import scala.annotation.nowarn
def t = { 0: @nowarn; 1 }
Run Code Online (Sandbox Code Playgroud)

不发出警告,而

def t = { 0; 1 }
Run Code Online (Sandbox Code Playgroud)

warning: a pure expression does nothing in statement position; multiline expressions might require enclosing parentheses
  def t = { 0; 1 }
            ^
Run Code Online (Sandbox Code Playgroud)