报告带有太少 case 标签的 switch 语句和表达式,并建议将它们重写为 ifelse if 语句。

示例 (minimum branches == 3):


  switch (expression) {
    case "foo" -> foo();
    case "bar" -> bar();
  }

在应用快速修复后:


  if ("foo".equals(expression)) {
    foo();
  } else if ("bar".equals(expression)) {
    bar();
  }

不报告详尽的 switch 表达式 (Java 14+) 或不带 'default' 分支的模式 switch 语句(Java 17 预览版)。 这是因为当 switch 被转换为 if 后,编译时详尽性检查将丢失(可能是不希望发生的结果)。

配置检查:

使用最小分支数 字段指定 case 标签的最小预期数量。

使用不报告模式 switch 语句选项可避免报告具有模式分支的 switch 语句和表达式。 例如:


  String result = switch(obj) {
    case String str -> str.trim();
    default -> "none";
  };

即使只有一个模式分支,也应该保留 switch,而不是使用 instanceof 语句。