【问题标题】:How to disable warnings in SBT console如何在 SBT 控制台中禁用警告
【发布时间】:2020-04-01 14:33:57
【问题描述】:

我是 SBT 新手,我喜欢在 SBT 控制台中调试 scala 源代码。但是控制台总是为每个命令行重复像<console>:65: warning: Unused import 这样的警告。真烦人。

如何在 SBT 控制台中禁用这个无用的警告,同时在 sbt compile 中保留这个检查?
我想我应该在build.sbt 中添加类似scalacOptions in console := ??? 的内容,但不确定应该是什么。

[更新]
我没有通过关于 sbt 的教程,所以我从一些示例项目中复制了 build.sbt。我加了scalacOptions in (Compile, console) ...,还是不行。

    scalacOptions in Compile ++= Seq("-deprecation", "-feature", "-unchecked", "-Xlog-reflective-calls", "-Xlint"),
    scalacOptions in (Compile, console) ~= { _.filterNot(Set("-Ywarn-unused-import", "-Ywarn-unused:imports")) },
    javacOptions in Compile ++= Seq("-Xlint:unchecked", "-Xlint:deprecation"),
    javaOptions in run ++= Seq("-Xms256m", "-Xmx2048m", "-Djava.library.path=./target/native"),
    libraryDependencies ++= Seq(

【问题讨论】:

  • 考虑使用the sbt-tpolecat plugin,它提供了一组良好的标志以确保最佳实践并已经处理此类问题,例如禁用控制台任务上的某些标志。

标签: scala sbt


【解决方案1】:

对于像这样的常见问题,您可以尝试从开源项目中检出build.sbt 文件,看看它们是如何处理的。

scalacOptions in (Compile, console) ~= { _.filterNot(Set("-Ywarn-unused-import", "-Ywarn-unused:imports")) }

这是cats 的摘录。 link

更新:

我上面粘贴的代码是关于在运行 console 命令 (console) 时过滤掉代码中 src/main (Compile) 下的特定 scalac 标志。

有一些选项会从 scalac 生成未使用的导入警告。 cats 库正在使用特定于未使用的导入警告的选项(-Ywarn-unused-import-Ywarn-unused:imports),因此,它只是过滤掉了那些。

在您的情况下,生成警告的标志是-Xlint,它也会生成许多其他类型的警告。您可以删除Set 中的标志并添加-Xlint,它将停止生成未使用的导入警告。但是,它也将停止生成其他警告。 (不过应该没什么大不了的,因为它只是repl。)

【讨论】:

  • 是的,我从一些示例项目开始我的build.sbt。我按照您的建议尝试了,但仍然没有运气。也许我搞砸了我的 sbt 文件?
猜你喜欢
  • 1970-01-01
  • 2019-08-17
  • 1970-01-01
  • 1970-01-01
  • 2013-03-16
  • 1970-01-01
  • 2017-04-27
  • 2017-10-30
  • 1970-01-01
相关资源
最近更新 更多