如何让SBT不报告生成代码的编译警告?

时间:2014-03-28 20:18:51

标签: scala sbt

我使用scalaxb-sbt插件生成代码,在编译时会生成大量警告消息。有没有办法隐藏生成代码或包的编译警告?

5 个答案:

答案 0 :(得分:4)

对于 Scala 2.12.13+ 或 2.13.2+

Scala 编译器的最新版本集成了消音器插件,请参阅 configurable warnings
所以现在您不需要任何插件,只需将以下行添加到 build.sbt

ThisBuild / scalacOptions += "-Wconf:src=src_managed/.*:silent"

使用此选项将禁止对位于源代码树中任何位置名为 src_managed 的目录下的生成代码发出警告。

这解决了我使用 zio-grpc 生成的代码的问题,其中编译器发出 parameter value evidence$3 in method live is never used 之类的警告(添加此信息只是为了更好的可搜索性)。

答案 1 :(得分:3)

在您的sbt控制台中,您可以尝试以下操作: set logLevel in compile := Level.Error或最终set logLevel in sourceGenerators := Level.Error 并尝试不同的设置。一旦您满意,您可以在build.sbt

中应用此设置

更多详细信息可以在sbt文档中找到:http://www.scala-sbt.org/release/docs/Howto/logging.html

答案 2 :(得分:2)

silencer编译器插件可禁止显示编译器警告。它支持按路径过滤文件。这将从警告中过滤掉所有生成的文件:

scalacOptions += "-P:silencer:pathFilters=src_managed"

答案 3 :(得分:1)

将代码放在子项目中,并在该项目中以不同方式设置scalacOptions?这是否有效取决于scalac中是否存在支持以抑制您正在获得的特定类型的警告。请参阅示例https://issues.scala-lang.org/browse/SI-1781。您需要准确压制什么样的警告?某些警告,例如未经检查的警告,可以通过例如@unchecked,无需进行子项目。

答案 4 :(得分:1)

我发现我需要在我的sbt控制台会话中执行set logLevel in Compile := Level.Error才能使其正常工作。这是C中的大写Compile。这是sbt版本0.13.11。这也是为了关闭所有警告。