Skip to content
← Back to rules

eslint/for-direction 正しさ

This rule is turned on by default.
An auto-fix is available for this rule.

何を検出するか

ループの終了条件に到達できないように、更新節がカウンターを逆方向に移動する for ループを禁止します。

なぜ問題なのか

終了条件に到達できない for ループは無限ループになります。無限ループは意図的な場合もありますが、通常は while ループとして書かれます。多くの場合、無限の for ループはバグです。

このルールに違反する誤ったコードの例:

js
/* for-direction: "error" */

for (var i = 0; i < 10; i--) {}

for (var i = 10; i >= 0; i++) {}

for (var i = 0; i > 10; i++) {}

for (var i = 0; 10 > i; i--) {}

const n = -2;
for (let i = 0; i < 10; i += n) {}

このルールに従う正しいコードの例:

js
/* for-direction: "error" */

for (var i = 0; i < 10; i++) {}

for (var i = 0; 10 > i; i++) {
  // カウンター "i" が右側にある
}

for (let i = 10; i >= 0; i += this.step) {
  // 移動方向が不明
}

for (let i = MIN; i <= MAX; i -= 0) {
  // 増加または減少していない
}

使用方法

設定ファイルまたは CLI でこのルールを有効化するには、次のように使用できます:

json
{
  "rules": {
    "for-direction": "error"
  }
}
bash
oxlint --deny for-direction

参照