如何正确使用scalac -Xlint

时间:2016-06-25 11:36:36

标签: scala compiler-flags scalac scala-compiler

scalax -Xlint帮助提供以下信息:

$ scalac -Xlint:help
Enable or disable specific warnings
  adapted-args               Warn if an argument list is modified to match the receiver.
  nullary-unit               Warn when nullary methods return Unit.
  inaccessible               Warn about inaccessible types in method signatures.
  nullary-override           Warn when non-nullary `def f()' overrides nullary `def f'.
  infer-any                  Warn when a type argument is inferred to be `Any`.
  missing-interpolator       A string literal appears to be missing an interpolator id.
  doc-detached               A Scaladoc comment appears to be detached from its element.
  private-shadow             A private field (or class parameter) shadows a superclass field.
  type-parameter-shadow      A local type parameter shadows a type already in scope.
  poly-implicit-overload     Parameterized overloaded implicit methods are not visible as view bounds.
  option-implicit            Option.apply used implicit view.
  delayedinit-select         Selecting member of DelayedInit.
  by-name-right-associative  By-name parameter of right associative operator.
  package-object-classes     Class or object defined in package object.
  unsound-match              Pattern match may not be typesafe.
  stars-align                Pattern sequence wildcard must align with sequence component.

有没有办法启用所有检查? scalac -Xlint的语义是什么?它会启用所有?默认设置(哪个)?不会做任何事情吗?

  

注意:Scala 2.11.8和sbt 0.13.9

     

如果较新的版本提供不同的行为/功能让我知道,因为更新它们不是问题

1 个答案:

答案 0 :(得分:7)

-Xlint currently means -Xlint:_,但需要to be made explicit

从历史上看,默认情况下始终存在噪音太大或不可靠的警告,因此-Xlint始终会排除警告。

目前,有one such lintable,但它没有连接到命令行选项。

曾经有-Ywarn-all表示-Xlint加上其他警告。这个选项消失的原因并不明显。

有一次,-Xlint:_意味着-Ywarn-all-Xlint意味着推荐的子集,但事实证明人们喜欢用{禁用一个或两个lint规则{1}},如果能够实现任意多种其他噪声lint规则,则更难做到。

通常,-Xlint:-annoying,_显示默认值;但可能会改进scalac -X以显示其默认行为。对于类似scalac -Xlint:help的内容,该默认值非常重要。

-Yopt