报告使用 null 显式初始化的变量定义。

var v: T = null 共有三种不同类型:

  1. v 是一个 可选
    → 使用 Option[T] 类型,这是习惯用法并且类型安全
  2. v 是一个 未初始化的值(必须分配一个值)
    → 使用清晰、简洁且与平台无关的 _ (Scala 2) 或 scala.compiletime.uninitialized (Scala 3) 作为初始化器
  3. 这是一种性能优化(您实际上使用的是 null 值)
    → 明确禁止对不安全代码的检查

将提供两个快速修复:

示例:


  class Test {
    var optional: String = null
    var uninit: String = null

    uninit = "initialized later"
  }

在应用快速修复后:


  class Test {
    var optional: Option[String] = None
    var uninit: String = _

    uninit = "initialized later"
  }