Skip to content
← Back to rules

eslint/curly スタイル

🛠️ An auto-fix is available for this rule.

何を実行するか

このルールは、すべての制御文(ifelseforwhiledowith)で中括弧 {} を使用することを強制します。
ブロックがすべて中括弧で囲まれることで、コードの可読性と保守性が向上します。

なぜ悪いのか

中括弧を省略すると、コードの可読性が低下し、特に深いネストやインデントがある場合にエラーの発生リスクが高まります。
後から追加されたステートメントが適切に中括弧で囲まれていない場合、バグを引き起こす可能性があります。
中括弧を一貫して使用することで、コードの安全性と変更のしやすさが向上します。

"all" (デフォルト)

このルールに対して不正なコードの例:

js
/* curly: ["error", "all"] */

if (foo) foo++;
while (bar) bar--;
do foo();
while (bar);

このルールに対して正しいコードの例:

js
/* curly: ["error", "all"] */

if (foo) {
  foo++;
}
while (bar) {
  bar--;
}
do {
  foo();
} while (bar);

"multi"

"multi" オプションを使用した場合の不正なコードの例:

js
/* curly: ["error", "multi"] */

if (foo) foo();
else {
  bar();
  baz();
}

"multi" オプションを使用した場合の正しいコードの例:

js
/* curly: ["error", "multi"] */

if (foo) foo();
else bar();

"multi-line"

"multi-line" オプションを使用した場合の不正なコードの例:

js
/* curly: ["error", "multi-line"] */

if (foo) foo();
else bar();

while (foo) foo();

"multi-line" オプションを使用した場合の正しいコードの例:

js
/* curly: ["error", "multi-line"] */

if (foo) foo();
else bar();

while (foo) foo();

while (true) {
  doSomething();
  doSomethingElse();
}

"multi-or-nest"

"multi-or-nest" オプションを使用した場合の不正なコードの例:

js
/* curly: ["error", "multi-or-nest"] */

if (foo) if (bar) bar();

while (foo) while (bar) bar();

"multi-or-nest" オプションを使用した場合の正しいコードの例:

js
/* curly: ["error", "multi-or-nest"] */

if (foo) {
  if (bar) bar();
}

while (foo) {
  while (bar) bar();
}

"consistent"

有効化された場合、"consistent"if-else チェーン内の括弧の使用を一貫性のあるものにします。
チェーンの一部のブランチで中括弧を使用している場合、他のすべてのブランチも中括弧を使用しなければならず、最初のオプションでは厳密に必須ではない場合でも同様です。

"multi""consistent" を併用した場合の不正なコードの例:

js
/* curly: ["error", "multi", "consistent"] */

if (foo) {
  bar();
  baz();
} else qux();

if (foo) bar();
else {
  baz();
  qux();
}

"multi""consistent" を併用した場合の正しいコードの例:

js
/* curly: ["error", "multi", "consistent"] */

if (foo) {
  bar();
  baz();
} else {
  qux();
}

if (foo) {
  bar();
} else {
  baz();
  qux();
}

"multi-line""consistent" を併用した場合の不正なコードの例:

js
/* curly: ["error", "multi-line", "consistent"] */

if (foo) {
  bar();
} else baz();

"multi-line""consistent" を併用した場合の正しいコードの例:

js
/* curly: ["error", "multi-line", "consistent"] */

if (foo) {
  bar();
} else {
  baz();
}

"multi-or-nest""consistent" を併用した場合の不正なコードの例:

js
/* curly: ["error", "multi-or-nest", "consistent"] */

if (foo) {
  if (bar) baz();
} else qux();

"multi-or-nest""consistent" を併用した場合の正しいコードの例:

js
/* curly: ["error", "multi-or-nest", "consistent"] */

if (foo) {
  if (bar) baz();
} else {
  qux();
}

設定

curly ルールの設定は、1つまたは2つの要素を持つ配列で指定されます。

例:

  • ["all"] - すべての場合で中括弧を必須とする(デフォルト)
  • ["multi"] - 複数のステートメントを含むブロックでのみ中括弧を必須とする
  • ["multi-line"] - 複数行にわたるブロックでのみ中括弧を必須とする
  • ["multi-or-nest"] - ネストされているか複数行にわたるブロックでのみ中括弧を必須とする
  • ["multi", "consistent"] - マルチモード + if-else チェーン内の括弧の一貫性

1番目のオプション

type: "all" | "multi" | "multi-line" | "multi-or-nest"

curly ルールの適用タイプ。

"all"

すべての場合で中括弧を必須とする(デフォルト)

"multi"

ブロック内に複数のステートメントがある場合にのみ中括弧を必須とする

"multi-line"

ブロックが複数行にわたる場合にのみ中括弧を必須とする

"multi-or-nest"

ブロックがネストされているか複数行にわたる場合にのみ中括弧を必須とする

2番目のオプション

使い方

このルールを構成ファイルまたは CLI で有効化するには、以下の方法が利用可能です:

json
{
  "rules": {
    "curly": "error"
  }
}
bash
oxlint --deny curly

参照