编译器选项警告与 linter

Sim*_*ins 2 scala

在 Scala 2.12 中,这些选项之间有什么区别:

  • -Xlint:adapted-args 对比 -Ywarn-adapted-args
  • -Xlint:nullary-unit 对比 -Ywarn-nullary-unit
  • -Xlint:inaccessible 对比 -Ywarn-inaccessible
  • -Xlint:nullary-override 对比 -Ywarn-nullary-override
  • -Xlint:infer-any 对比 -Ywarn-infer-any

如果不是,使用哪个更有意义?我也用fatal-warnings, 和几乎所有-Ywarn-Xlint选项进行编译。

Gab*_*lla 5

如果你跑scalac -Xlint:help你会看到

? 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 viewbounds.
  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.
  constant                   Evaluation of a constant arithmetic expression results in an error.
  unused                     Enable -Ywarn-unused:imports,privates,locals,implicits.
Default: All choices are enabled by default.
Run Code Online (Sandbox Code Playgroud)

所以选择Xlint选项或直接使用相应的标志没有区别。我会-Xlint选择(没有选项,所以默认情况下全部启用)并删除我不需要的,例如

-Xlint:-unused,_

启用除unused标志外的所有内容。