eslint/for-direction 正しさ
何を検出するか
ループの終了条件に到達できないように、更新節がカウンターを逆方向に移動する 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