在小于全局范围内关闭 Scala lint 警告?
Turn off Scala lint warnings at a less-than-global scope?
我希望能够关闭特定的编译器警告,但仅限于我项目中的单个文件。这可能吗?
上下文是我有一个单一的源文件,它调用一个外部宏库,产生适应参数警告。我发现我可以通过更改 build.sbt
文件来消除这些警告:
scalacOptions ++= Seq("-Xlint:-adapted-args,_" /*, ... */)
但是,这会在全局范围内关闭警告,我只希望针对引发它们的单个文件关闭它。
我没有找到任何我认为可能存在的以下可能解决方案:
- 在我的
build.sbt
文件中为我的项目中的不同文件指定单独的编译选项
- 在我的源文件中提供一些类似 pragma 的注释来更改编译器生成的警告,类似于 Scalastyle 识别的特殊
scalastyle:on/off
注释
- 一些用于较小代码区域的注释,例如
@unchecked
那么,有什么方法可以让不同的 linting 选项对不同的文件生效,甚至对有限的代码区域生效?
人们希望编写一个自定义 Reporter
来过滤掉不需要的警告。
编写一个按文件名过滤的程序很容易,也许给定一个白名单。
error/warn API 提供文本 Position
。将 position.lineContent
解析为魔术注释标记(如 IGNORE
或 SUPPRESS
)也很容易,这不如 SuppressWarnings
注释方便,但易于实现。
编译器询问记者是否有错误。
自定义报告器由 -Xreporter myclass
指定,否则如果有人编写了 sbt 插件,我不会感到惊讶。
我希望能够关闭特定的编译器警告,但仅限于我项目中的单个文件。这可能吗?
上下文是我有一个单一的源文件,它调用一个外部宏库,产生适应参数警告。我发现我可以通过更改 build.sbt
文件来消除这些警告:
scalacOptions ++= Seq("-Xlint:-adapted-args,_" /*, ... */)
但是,这会在全局范围内关闭警告,我只希望针对引发它们的单个文件关闭它。
我没有找到任何我认为可能存在的以下可能解决方案:
- 在我的
build.sbt
文件中为我的项目中的不同文件指定单独的编译选项 - 在我的源文件中提供一些类似 pragma 的注释来更改编译器生成的警告,类似于 Scalastyle 识别的特殊
scalastyle:on/off
注释 - 一些用于较小代码区域的注释,例如
@unchecked
那么,有什么方法可以让不同的 linting 选项对不同的文件生效,甚至对有限的代码区域生效?
人们希望编写一个自定义 Reporter
来过滤掉不需要的警告。
编写一个按文件名过滤的程序很容易,也许给定一个白名单。
error/warn API 提供文本 Position
。将 position.lineContent
解析为魔术注释标记(如 IGNORE
或 SUPPRESS
)也很容易,这不如 SuppressWarnings
注释方便,但易于实现。
编译器询问记者是否有错误。
自定义报告器由 -Xreporter myclass
指定,否则如果有人编写了 sbt 插件,我不会感到惊讶。