Справочник по правилам
Правила в ESLint сгруппированы по типу, чтобы помочь вам понять их назначение. Каждое правило имеет эмодзи, обозначающие:
Использование конфигурации recommended из @eslint/js в файле конфигурации включает это правило
Некоторые проблемы, выявленные этим правилом, автоматически исправляются с помощью опции --fix командной строки
Некоторые проблемы, выявленные этим правилом, можно исправить вручную с помощью подсказок редактора редактора
Возможные проблемы
Эти правила относятся к возможным логическим ошибкам в коде: Выполнение обязательных 💡 Рекомендации Требуются вызовы ✅ Расширяет Требование, чтобы обновление цикла «for» перемещало счётчик в нужном направлении ✅ Расширяет Выполнение обязательных ✅ Расширяет Запрещено использование асинхронной функции в качестве исполнителя Promise ✅ Расширяет Запрещено использование Запрещена перепривязка членов класса ✅ Расширяет Запрещено сравнение с -0 ✅ Расширяет Запрещены операторы присваивания в условных выражениях ✅ Расширяет Запрещена перепривязка ✅ Расширяет Запрещены выражения, где операция не влияет на значение ✅ Расширяет Запрещены постоянные выражения в условиях ✅ Расширяет Запрещено возвращать значение из конструктора Запрещены управляющие символы в регулярных выражениях ✅ Расширяет Запрещено использование ✅ Расширяет Запрещены дублируемые аргументы в определениях ✅ Расширяет Запрещены дублируемые члены класса ✅ Расширяет Запрещены дублирующие условия в цепочках if-else-if ✅ Расширяет Запрещены дублирующие ключи в объектных литералах ✅ Расширяет Запрещены дублирующие метки case ✅ Расширяет Запрещены дублирующие импорты модулей Запрещены пустые классы символов в регулярных выражениях ✅ Расширяет Запрещены пустые шаблоны деструктуризации ✅ Расширяет Запрещена перепривязка исключений в ✅ Расширяет return утверждений в обратных вызовах методов массиваsuper() в конструкторахreturn утверждений в геттерахawait внутри цикловconst переменныхdebuggerfunctioncatch блоках
Запрещено продолжение выполнения (fallthrough) ✅ Extends Запрещено повторное присваивание ✅ Extends Запрещено присваивание импортированным связям ✅ Extends Запрещено объявление переменных или Запрещены недопустимые строки регулярных выражений в конструкторах ✅ Extends Запрещён нерегулярный пробел ✅ Extends Запрещены литеральные числа, которые теряют точность ✅ Extends Запрещены символы, созданные с помощью нескольких кодовых точек в синтаксисе класса символов ✅ Extends 💡 Suggestions Запрещены ✅ Extends Запрещено вызывать свойства глобального объекта как функции ✅ Extends Запрещено возвращать значения из функций-исполнителей Promise 💡 Suggestions Запрещено вызывать некоторые ✅ Extends 💡 Suggestions Запрещены присваивания, где обе стороны идентичны ✅ Extends Запрещены сравнения, где обе стороны идентичны Запрещено возвращать значения из сетеров ✅ Extends Запрещены разреженные массивы ✅ Extends Запрещён синтаксис шаблонов литералов в обычных строках Запрещено ✅ Extends Запрещено использовать необъявленные переменные, если они не указаны в ✅ Extends Запрещены запутывающие многострочные выражения ✅ Extends Запрещены неизменённые условия циклов Запрещён недостижимый код после ✅ Extends Запрещены циклы с телом, допускающим только одно повторениеcase инструкцийfunction объявленийfunction в вложенных блокахRegExpnew операторы с глобальными функциями, не являющимися конструкторамиObject.prototype методы напрямую на объектахthis/super до вызова super() в конструкторах/*global */ комментарияхreturn, throw, continue, и break инструкций
Запрет управляющих операторов в блоках ✅ Extends 💡 Suggestions Запрет отрицания левого операнда операторов сравнения ✅ Extends 💡 Suggestions Запрет использования опциональной цепочки в контекстах, где значение ✅ Extends Запрет неиспользуемых частных членов класса ✅ Extends Запрет неиспользуемых переменных ✅ Extends Запрет использования переменных до их объявления Запрет присваивания переменным, когда значение не используется Запрет бесполезных обратных ссылок в регулярных выражениях ✅ Extends Запрет присваиваний, которые могут привести к гонкам, из-за использования Требуются вызовы ✅ Extends 💡 Suggestions Принудительное сравнение выражений ✅ Extends 💡 Suggestions finallyundefined недопустимоawait или yieldisNaN() для проверки на NaNtypeof с допустимыми строками
Suggestions
Эти правила предлагают альтернативные способы выполнения действий: Принудительное применение пар getter и setter в объектах и классах Обязательное использование фигурных скобок в телах стрелочных функций 🔧 Fix Принудительное использование переменных в пределах области их определения Принудительное соблюдение соглашения об именовании camelCase Принудительное или запрещение использования прописных букв в начале комментариев 🔧 Fix Требует, чтобы методы класса использовали Ограничение максимальной цикломатической сложности программы Обязательное задание значений для операторов return Принудительное использование согласованных имён при захвате текущего контекста выполнения Обязательное использование согласованного стиля фигурных скобок для всех управляющих операторов 🔧 Fix Требует Принудительное размещение оператора default в конце операторов switch Принудительное размещение параметров по умолчанию в конце списка параметров Принудительное использование точечной нотации 🔧 Fix Обязательное использование === и !== 🔧 Fix Требует соответствия имен функций и переменных или свойств Обязательное или запрещаемое использование именованных Обязательное использование Обязательное группирование пар getter и setter в объектах и классах Требует, чтобы циклы for...in содержали оператор Запрет указанных идентификаторов Ограничение минимальной и максимальной длины идентификаторов Обязательное соответствие идентификаторов заданному регулярному выражениюthisdefault случаев в switch операторахfunction выраженийfunction деклараций или выражений, присваиваемых переменнымfor-in
Требовать или запрещать инициализацию в объявлениях переменных Требовать или запрещать сокращённые логические операторы присваивания 🔧 Fix 💡 Suggestions Ограничивать максимальное количество классов в файле Ограничивать максимальную вложенность блоков Ограничивать максимальное количество строк в файле Ограничивать максимальное количество строк кода в функции Ограничивать максимальную вложенность колбэков Ограничивать максимальное количество параметров в определениях функций Ограничивать максимальное количество операторов в блоках функций Требовать, чтобы имена конструкторов начинались с заглавной буквы Запрещать использование Запрещать конструкторы 💡 Suggestions Запрещать побитовые операторы Запрещать использование Запрещать лексические объявления в разделах case ✅ Extends 💡 Suggestions Запрещать использование 💡 Suggestions Запрещать операторы Запрещать удаление переменных ✅ Extends Запрещать явное использование знака равенства в начале регулярных выражений 🔧 Fix Запрещать блоки else после операторов return в операторах if 🔧 Fix Запрещать пустые операторы блоков ✅ Extends 💡 Suggestions Запрещать пустые функции Запрещать пустые статические блоки ✅ Extends alert, confirm, и promptArrayarguments.caller или arguments.calleeconsolecontinue
Запрещено сравнение Запрещено использование Запрещено расширение встроенных типов Запрещены ненужные вызовы 🔧 Fix Запрещены ненужные преобразования в булевы значения ✅ Extends 🔧 Fix Запрещены ненужные метки 🔧 Fix Запрещены присваивания встроенным объектам или глобальным переменным с чтением только для чтения ✅ Extends Запрещено неявное преобразование типов 🔧 Fix 💡 Suggestions Запрещены объявления в глобальной области видимости Запрещено использование методов типа Запрещены inline-комментарии после кода Запрещено использование Запрещено использование свойства Запрещены метки, которые используют имя переменной Запрещены помеченные операторы Запрещены ненужные вложенные блоки Запрещены операторы 🔧 Fix Запрещены объявления функций, содержащие небезопасные ссылки внутри операторов цикла Запрещены магические числа Запрещено использование цепочек присваиваний Запрещены многострочные строки Запрещены отрицательные условия Запрещены вложенные условные операторыnull без операторов проверки типаeval().bind()eval()this в контекстах, где значение this является undefined__iterator__if как единственный оператор в блоках else
Запрещается использование операторов Запрещается использование операторов Запрещается использование операторов Запрещается использование escape-последовательностей ✅ Extends 💡 Suggestions Запрещается вызов конструктора 💡 Suggestions Запрещаются восьмеричные литералы ✅ Extends Запрещаются восьмеричные escape-последовательности в строковых литералах Запрещается переприсваивание параметров Запрещаются унарные операторы Запрещается использование свойства Запрещается повторная декларация переменных ✅ Extends Запрещается использование нескольких пробелов в регулярных выражениях ✅ Extends 🔧 Fix Запрещается использование указанных имён в экспортах Запрещаются указанные глобальные переменные Запрещены указанные модули при загрузке с помощью Запрещены определённые свойства на определённых объектах Запрещён указанный синтаксис Запрещаются операторы присваивания в операторах Запрещаются Запрещаются операторы запятой Запрещается объявление переменных, которые затеняют переменные, объявленные во внешней области видимости Запрещается использование идентификаторов, которые затеняют ограниченные имена ✅ Extends Запрещаются условные операторы (тернарные операторы)new вне присваиваний или сравненийnew с объектом Functionnew с объектами String, Number, и Boolean\8 и \9 в строковых литералахObject без аргументаfunction++ и --__proto__importreturnjavascript: URL
Запретить бросание литералов в качестве исключений Запретить инициализацию переменных значением 🔧 Fix Запретить использование Запретить использование подчёркиваний в конце идентификаторов Запрещать использование тернарных операторов, когда существуют более простые альтернативы 🔧 Fix Запрещать неиспользуемые выражения Запрещать неиспользуемые метки ✅ Extends 🔧 Fix Запрещать ненужные вызовы Запрещать ненужные блоки ✅ Extends Запрещать ненужные вычисленные ключи свойств в объектах и классах 🔧 Fix Запрещать ненужное конкатенацию литералов или шаблонных литералов Запрещать ненужные конструкторы 💡 Suggestions Запрещать ненужные управляющие символы ✅ Extends 💡 Suggestions Запрещать переименование импорта, экспорта и деструктурированных присваиваний в то же имя 🔧 Fix Запрещать избыточные операторы return 🔧 Fix Требовать использование 🔧 Fix Запрещать операторы Запрещать указанные предупреждающие термины в комментариях Запрещать операторы ✅ Extends Требовать или запрещать сокращенную синтаксическую запись методов и свойств для литералов объектов 🔧 Fix Требовать объявления переменных либо вместе, либо по отдельности в функциях 🔧 Fix Требовать или запрещать сокращенную запись операторов присваивания, где это возможно 🔧 Fix Требовать использование стрелочных функций для обратных вызовов 🔧 Fix undefinedundefined в качестве идентификатора.call() и .apply()catchlet или const вместо varvoidwith
Требовать 🔧 Fix Требовать деструктуризацию из массивов и/или объектов 🔧 Fix Запрещать использование 🔧 Fix Требовать использование именованных групп захвата в регулярных выражениях 💡 Suggestions Запрещать 🔧 Fix Запрещать использование 🔧 Fix Запрещать использование Object.assign с объектной литеральной как первым аргументом и предпочитать использование расширения объекта вместо этого 🔧 Fix Требовать использование объектов Error в качестве причин отклонения Promise Запрещать использование конструктора 💡 Suggestions Требовать rest параметры вместо Требовать операторы spread вместо Требовать шаблонные литералы вместо конкатенации строк 🔧 Fix Требовать согласованного использования аргумента radix при использовании 💡 Suggestions Запрещать асинхронные функции, которые не имеют выражения 💡 Suggestions Требовать использование флага 💡 Suggestions Требовать, чтобы функции-генераторы содержали ✅ Extends Требовать сортировку импортированных объявлений внутри модулей 🔧 Fix Требовать сортировку ключей объекта Требовать сортировку переменных в пределах одного блока объявления 🔧 Fix Требовать или запрещать директивы strict mode 🔧 Fix Требовать описания символов Требовать объявления Требовать или запрещать условия «Yoda» 🔧 Fix const объявления для переменных, которые никогда не переназначаются после объявленияMath.pow в пользу оператора **parseInt() и Number.parseInt() в пользу двоичных, восьмеричных и шестнадцатеричных литераловObject.prototype.hasOwnProperty.call() и предпочитать использование Object.hasOwn()RegExp в пользу литералов регулярных выраженийarguments.apply()parseInt()awaitu или v на RegExpyieldvar переменных в верхней части содержащей области видимости
Макет и форматирование
Эти правила касаются внешнего вида кода, а не его выполнения: Требовать или запрещать метку порядка байтов Юникода (BOM) 🔧 Исправить
Устаревшее
Эти правила устарели в соответствии с политикой устаревания и заменены новыми правилами: array-bracket-newline устаревшее ❌ 🔧 Исправление array-bracket-spacing устаревшее ❌ 🔧 Исправление array-element-newline устаревшее ❌ 🔧 Исправление arrow-parens устаревшее ❌ 🔧 Исправление arrow-spacing устаревшее ❌ 🔧 Исправление block-spacing устаревшее ❌ 🔧 Исправление brace-style устаревшее ❌ 🔧 Исправление callback-return устаревшее ❌ comma-dangle устаревшее ❌ 🔧 Исправление comma-spacing устаревшее ❌ 🔧 Исправление comma-style устаревшее ❌ 🔧 Исправление computed-property-spacing устаревшее ❌ 🔧 Исправление dot-location устаревшее ❌ 🔧 Исправление eol-last устаревшее ❌ 🔧 Исправление func-call-spacing устаревшее ❌ 🔧 Исправление function-call-argument-newline устаревшее ❌ 🔧 Исправление function-paren-newline устаревшее ❌ 🔧 Исправление generator-star-spacing устаревшее ❌ 🔧 Исправление global-require устаревшее ❌ handle-callback-err устаревшее ❌ id-blacklist устаревшее Заменено на ❌ implicit-arrow-linebreak устаревшее ❌ 🔧 Исправление indent устаревшее ❌ 🔧 Исправление indent-legacy устаревшее Заменено на ❌ 🔧 Исправление jsx-quotes устаревшее ❌ 🔧 Исправление key-spacing устаревшее ❌ 🔧 Исправление keyword-spacing устаревшее ❌ 🔧 Исправление line-comment-position устаревшее ❌ linebreak-style устаревшее ❌ 🔧 Исправление lines-around-comment устаревшее ❌ 🔧 Исправление id-denylistindent
lines-around-directive устаревшее Заменено на ❌ 🔧 Исправление lines-between-class-members устаревшее ❌ 🔧 Исправление max-len устаревшее ❌ max-statements-per-line устаревшее ❌ multiline-comment-style устаревшее ❌ 🔧 Исправление multiline-ternary устаревшее ❌ 🔧 Исправление new-parens устаревшее ❌ 🔧 Исправление newline-after-var устаревшее Заменено на ❌ 🔧 Исправление newline-before-return устаревшее Заменено на ❌ 🔧 Исправление newline-per-chained-call устаревшее ❌ 🔧 Исправление no-buffer-constructor устаревшее ❌ no-catch-shadow устаревшее Заменено на ❌ no-confusing-arrow устаревшее ❌ 🔧 Исправление no-extra-parens устаревшее ❌ 🔧 Исправление no-extra-semi устаревшее ❌ 🔧 Исправление no-floating-decimal устаревшее ❌ 🔧 Исправление no-mixed-operators устаревшее ❌ no-mixed-requires устаревшее ❌ no-mixed-spaces-and-tabs устаревшее ❌ no-multi-spaces устаревшее ❌ 🔧 Исправление no-multiple-empty-lines устаревшее ❌ 🔧 Исправление no-native-reassign устаревшее Заменено на ❌ no-negated-in-lhs устаревшее Заменено на ❌ no-new-object устаревшее Заменено на ❌ no-new-require устаревшее ❌ no-new-symbol устаревшее Заменено на ❌ no-path-concat устаревшее ❌ no-process-env устаревшее ❌padding-line-between-statementspadding-line-between-statementspadding-line-between-statementsno-shadowno-global-assignno-unsafe-negationno-object-constructorno-new-native-nonconstructor
no-process-exit устаревший ❌ no-restricted-modules устаревший ❌ no-return-await устаревший ❌ 💡 Предложения no-spaced-func устаревший Заменено на ❌ 🔧 Исправление no-sync устаревший ❌ no-tabs устаревший ❌ no-trailing-spaces устаревший ❌ 🔧 Исправление no-whitespace-before-property устаревший ❌ 🔧 Исправление nonblock-statement-body-position устаревший ❌ 🔧 Исправление object-curly-newline устаревший ❌ 🔧 Исправление object-curly-spacing устаревший ❌ 🔧 Исправление object-property-newline устаревший ❌ 🔧 Исправление one-var-declaration-per-line устаревший ❌ 🔧 Исправление operator-linebreak устаревший ❌ 🔧 Исправление padded-blocks устаревший ❌ 🔧 Исправление padding-line-between-statements устаревший ❌ 🔧 Исправление prefer-reflect устаревший ❌ quote-props устаревший ❌ 🔧 Исправление quotes устаревший ❌ 🔧 Исправление rest-spread-spacing устаревший ❌ 🔧 Исправление semi устаревший ❌ 🔧 Исправление semi-spacing устаревший ❌ 🔧 Исправление semi-style устаревший ❌ 🔧 Исправление space-before-blocks устаревший ❌ 🔧 Исправление space-before-function-paren устаревший ❌ 🔧 Исправление space-in-parens устаревший ❌ 🔧 Исправление space-infix-ops устаревший ❌ 🔧 Исправление space-unary-ops устаревший ❌ 🔧 Исправление spaced-comment устаревший ❌ 🔧 Исправление switch-colon-spacing устаревший ❌ 🔧 Исправление func-call-spacing
template-curly-spacing устаревший ❌ 🔧 Исправить template-tag-spacing устаревший ❌ 🔧 Исправить wrap-iife устаревший ❌ 🔧 Исправить wrap-regex устаревший ❌ 🔧 Исправить yield-star-spacing устаревший ❌ 🔧 Исправить
Удаленные
Эти правила из более ранних версий ESLint (до существования политики устаревания) были заменены более новыми правилами: generator-star удалено Заменено на global-strict удалено Заменено на no-arrow-condition удалено Заменено на no-comma-dangle удалено Заменено на no-empty-class удалено Заменено на no-empty-label удалено Заменено на no-extra-strict удалено Заменено на no-reserved-keys удалено Заменено на no-space-before-semi удалено Заменено на no-wrap-func удалено Заменено на space-after-function-name удалено Заменено на space-after-keywords удалено Заменено на space-before-function-parentheses удалено Заменено на space-before-keywords удалено Заменено на space-in-brackets удалено Заменено на space-return-throw-case удалено Заменено на space-unary-word-ops удалено Заменено на spaced-line-comment удалено Заменено на valid-jsdoc удалено Заменено на require-jsdoc удалено Заменено на generator-star-spacingstrictno-confusing-arrowno-constant-conditioncomma-dangleno-empty-character-classno-labelsstrictquote-propssemi-spacingno-extra-parensspace-before-function-parenkeyword-spacingspace-before-function-parenkeyword-spacingobject-curly-spacingarray-bracket-spacingkeyword-spacingspace-unary-opsspaced-comment
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules