在低于全球范围内关闭Scala lint警告?

时间:2017-01-19 20:50:42

标签: scala lint

我希望能够关闭特定的编译器警告,但仅限于项目中的单个文件。这可能吗?

上下文是我有一个源文件,它调用外部宏库来生成适应的arg警告。我发现我可以通过更改build.sbt文件消除这些警告:

scalacOptions ++= Seq("-Xlint:-adapted-args,_" /*, ... */)

但是,这会全局关闭警告,而我只希望将其关闭以引发它们的单个文件。

我没有幸运地寻找下列任何我认为可能存在的解决方案:

  • 在我的build.sbt文件
  • 中为项目中的不同文件指定单独的编译选项
  • 在我的源文件中提供一些类似pragma的注释,以更改编译器生成的警告,类似于Scalastyle识别的特殊scalastyle:on/off注释
  • 较小代码区域的一些注释,例如@unchecked

那么,对于不同的文件,甚至是有限的代码区域,是否有任何方法可以使用不同的linting选项?

1 个答案:

答案 0 :(得分:1)

期望人们会编写一个自定义Reporter来过滤掉不需要的警告。

很容易编写一个按文件名过滤的文件,也许是白名单。

错误/警告API提供文字Position。对position.lineContentIGNORE之类的魔术评论标记进行SUPPRESS分析也很容易,这不像SuppressWarnings注释那样方便,但很容易实现。

编译器询问记者是否有错误。

自定义记者使用-Xreporter myclass指定,或者如果有人写了sbt插件,我也不会感到惊讶。