【发布时间】:2021-02-24 23:36:16
【问题描述】:
我使用 scalaxb-sbt 插件生成代码,该插件在编译时会生成大量警告消息。有没有办法隐藏生成代码或包的编译警告?
【问题讨论】:
我使用 scalaxb-sbt 插件生成代码,该插件在编译时会生成大量警告消息。有没有办法隐藏生成代码或包的编译警告?
【问题讨论】:
silencer 编译器插件允许抑制编译器警告。它支持按路径过滤文件。这将从警告中过滤掉所有生成的文件:
scalacOptions += "-P:silencer:pathFilters=src_managed"
【讨论】:
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 之类的警告(添加此信息只是为了更好地搜索)。
【讨论】:
在您的 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
【讨论】:
我发现我需要在我的 sbt 控制台会话中执行 set logLevel in Compile := Level.Error 才能使其工作。这是Compile 中的大写字母C。这是 sbt 版本 0.13.11。不过,这也是为了关闭所有警告。
【讨论】:
set logLevel in search in Compile := Level.Error
将代码放在子项目中,并在该项目中以不同方式设置scalacOptions?这是否可行取决于 scalac 中是否存在用于抑制您收到的特定类型警告的支持。参见例如 https://issues.scala-lang.org/browse/SI-1781 。您需要准确抑制什么样的警告?某些警告(如未经检查的警告)可以通过例如@unchecked 无需做子项目的事情。
【讨论】: