报告没有大括号的 ifwhiledofor 语句。 一些代码样式,例如 Google Java 样式指南,要求所有控制语句都要带大括号。

在向不带大括号的控制语句添加更多语句时,重要的是不要忘记添加大括号。 在注释掉一行代码时,在不使用大括号时也必须更加小心,以免无意中使下一条语句成为控制流语句的一部分。 Always using braces makes insertion or commenting out of a line of code safer.

如果始终遵循使用大括号的代码样式,则很可能不会发生 goto fail 漏洞。 带大括号的控制语句使控制流更易于查看,而无需依赖于可能不正确的缩进。

示例:


  class Strange {
    void x(boolean one, boolean two) {
      if(one)
        if(two)
          foo();
      else
        bar();
    }

    void foo() {}
    void bar() {}
  }

快速修复用大括号包装语句体:


  class Strange {
    void x(boolean one, boolean two) {
      if(one) {
        if(two) {
          foo();
        } else {
          bar();
        }
      }
    }

    void foo() {}
    void bar() {}
  }