Reports switch expressions that do not cover all possible outcomes of the matched expression.

Groovy does not require that switch expression must be exhaustive. It acts as if an implicit default -> null branch is inserted. It may cause unexpected nulls if a developer forgets to insert necessary case branches.

Example:


  enum A { X, Y }

  def foo(A a) {
    def x = switch (a) { // reports switch
      case A.X -> ...
    }
  }