【问题标题】:Warn about name shadowing in scala 2.11警告scala 2.11中的名称阴影
【发布时间】:2016-01-05 22:58:37
【问题描述】:

我正在使用 SBT 构建一个项目,并在我的Build.scala

scalacOptions ++= Seq("-unchecked", "-deprecation", "-feature", "-Xfatal-warnings")

如何配置项目以警告名称/变量阴影?我浏览了源代码herehere,但在众多选项中看不到我在寻找什么。对this old question 的评论提到了一个似乎不存在的标志-Ywarn-shadowing

【问题讨论】:

标签: scala compiler-warnings compiler-flags


【解决方案1】:

related question 所示,您可以从-X 开始探索。然后我尝试了-Xlint:help,这会产生一些阴影设置:

Information:scalac: 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.

-Xlint:private-shadow 可能是你想要的?

【讨论】:

  • 谢谢,这有帮助,但我正在寻找变量的阴影,例如val 在嵌套范围内,或 val 隐藏函数或方法参数。看起来可能不可能,这对我来说有点杜鹃。
【解决方案2】:

有很多 scala linter 工具。 ScapegoatVariableShadowing 的选项。我在更流行的 linter 中没有看到阴影选项,但您可以自己实现一个。

【讨论】:

    猜你喜欢
    • 2021-05-22
    • 2019-04-05
    • 2019-07-06
    • 1970-01-01
    • 2017-12-04
    • 2014-03-28
    • 2019-03-28
    • 1970-01-01
    • 2019-09-27
    相关资源
    最近更新 更多