Rule: curly

Enforces braces for if/for/do/while statements.

Rationale
if (foo === bar)
    foo++;
    bar++;

In the code above, the author almost certainly meant for both foo++ and bar++ to be executed only if foo === bar. However, they forgot braces and bar++ will be executed no matter what. This rule could prevent such a mistake.

Notes:
Has Fixer

Config

One of the following options may be provided:

  • "as-needed" forbids any unnecessary curly braces.
  • "ignore-same-line" skips checking braces for control-flow statements that are on one line and start on the same line as their control-flow keyword
Config examples
"curly": true
"curly": [true, "ignore-same-line"]
"curly": [true, "as-needed"]
Schema
{
  "type": "array",
  "items": {
    "type": "string",
    "enum": [
      "as-needed",
      "ignore-same-line"
    ]
  }
}

Code examples:

Require curly braces whenever possible (default)
"rules": { "curly": true }
Passes
if (x > 0) {
    doStuff();
}
Fails
if (x > 0)
    doStuff();

if (x > 0) doStuff();
Make an exception for single-line instances
"rules": { "curly": [true, "ignore-same-line"] }
Passes
if (x > 0) doStuff();
Fails
if (x > 0)
    doStuff()
Error on unnecessary curly braces
"rules": { "curly": [true, "as-needed"] }
Passes
if (x > 0)
    doStuff();

if (x > 0) {
    customerUpdates.push(getInfo(customerId));
    return customerUpdates;
}
Fails
if (x > 0) {
    doStuff();
}