Skip to content

☂️ eslint core #479

@Boshen

Description

@Boshen

Warning

This comment is maintained by CI. Do not edit this comment directly.
To update comment template, see https://github.com/oxc-project/oxc/tree/main/tasks/lint_rules

This is the tracking issue for eslint.

There are 199(+ 93 deprecated) rules.

  • 0/61 recommended rules are remaining as TODO
    • 4 of which have pending fixes
    • All done! 🎉
  • 21/138 not recommended rules are remaining as TODO
    • 16 of which have pending fixes

To get started, run the following command:

just new-eslint-rule <RULE_NAME>

Then implement the rule and get all the tests passing.

Recommended rules

✅: 59, 🚫: 2, ⏳: 4 / total: 61
Status Name Rationale
eslint/constructor-super
eslint/for-direction
eslint/getter-return
eslint/no-async-promise-executor
✅⏳ eslint/no-case-declarations
eslint/no-class-assign
eslint/no-compare-neg-zero
eslint/no-cond-assign
eslint/no-const-assign
eslint/no-constant-binary-expression
eslint/no-constant-condition
eslint/no-control-regex
eslint/no-debugger
eslint/no-delete-var
🚫 eslint/no-dupe-args Superseded by strict mode.
eslint/no-dupe-class-members
eslint/no-dupe-else-if
eslint/no-dupe-keys
eslint/no-duplicate-case
eslint/no-empty
eslint/no-empty-character-class
eslint/no-empty-pattern
eslint/no-empty-static-block
eslint/no-ex-assign
eslint/no-extra-boolean-cast
✅⏳ eslint/no-fallthrough
eslint/no-func-assign
eslint/no-global-assign
eslint/no-import-assign
eslint/no-invalid-regexp
eslint/no-irregular-whitespace
eslint/no-loss-of-precision
✅⏳ eslint/no-misleading-character-class
eslint/no-new-native-nonconstructor
eslint/no-nonoctal-decimal-escape
eslint/no-obj-calls
🚫 eslint/no-octal Superseded by strict mode.
✅⏳ eslint/no-prototype-builtins
eslint/no-redeclare
eslint/no-regex-spaces
eslint/no-self-assign
eslint/no-setter-return
eslint/no-shadow-restricted-names
eslint/no-sparse-arrays
eslint/no-this-before-super
eslint/no-undef
eslint/no-unexpected-multiline
eslint/no-unreachable
eslint/no-unsafe-finally
eslint/no-unsafe-negation
eslint/no-unsafe-optional-chaining
eslint/no-unused-labels
eslint/no-unused-private-class-members
eslint/no-unused-vars
eslint/no-useless-backreference
eslint/no-useless-catch
eslint/no-useless-escape
eslint/no-with
eslint/require-yield
eslint/use-isnan
eslint/valid-typeof

✅ = Implemented, 🚫 = Not intending to implement, ⏳ = Fix pending

Not recommended rules

✅: 111, 🚫: 6, ⏳: 16 / total: 138
Status Name Rationale
eslint/accessor-pairs
eslint/array-callback-return
eslint/arrow-body-style
eslint/block-scoped-var
🚫 eslint/camelcase Superseded by @typescript-eslint/naming-convention, which accomplishes the same behavior with more flexibility.
eslint/capitalized-comments
eslint/class-methods-use-this
eslint/complexity
🚫 eslint/consistent-return Use typescript/consistent-return instead, which we support as a type-aware rule.
eslint/consistent-this
eslint/curly
eslint/default-case
eslint/default-case-last
eslint/default-param-last
🚫 eslint/dot-notation Use typescript/dot-notation instead, which we support as a type-aware rule.
eslint/eqeqeq
eslint/func-name-matching
eslint/func-names
✅⏳ eslint/func-style
✅⏳ eslint/grouped-accessor-pairs
eslint/guard-for-in
eslint/id-denylist
eslint/id-length
eslint/id-match
eslint/init-declarations
eslint/logical-assignment-operators
eslint/max-classes-per-file
eslint/max-depth
eslint/max-lines
eslint/max-lines-per-function
eslint/max-nested-callbacks
eslint/max-params
eslint/max-statements
✅⏳ eslint/new-cap
eslint/no-alert
eslint/no-array-constructor
eslint/no-await-in-loop
eslint/no-bitwise
eslint/no-caller
eslint/no-console
eslint/no-constructor-return
eslint/no-continue
eslint/no-div-regex
✅⏳ eslint/no-duplicate-imports
eslint/no-else-return
✅⏳ eslint/no-empty-function
eslint/no-eq-null
eslint/no-eval
eslint/no-extend-native
✅⏳ eslint/no-extra-bind
eslint/no-extra-label
eslint/no-implicit-coercion
eslint/no-implicit-globals
eslint/no-implied-eval
eslint/no-inline-comments
eslint/no-inner-declarations
🚫 eslint/no-invalid-this Superseded by TypeScript's noImplicitThis compiler option (enabled by strict mode).
eslint/no-iterator
eslint/no-label-var
eslint/no-labels
eslint/no-lone-blocks
✅⏳ eslint/no-lonely-if
eslint/no-loop-func
✅⏳ eslint/no-magic-numbers
eslint/no-multi-assign
eslint/no-multi-str
✅⏳ eslint/no-negated-condition
eslint/no-nested-ternary
eslint/no-new
eslint/no-new-func
eslint/no-new-wrappers
✅⏳ eslint/no-object-constructor
🚫 eslint/no-octal-escape Superseded by strict mode.
eslint/no-param-reassign
eslint/no-plusplus
✅⏳ eslint/no-promise-executor-return
✅⏳ eslint/no-proto
eslint/no-restricted-exports
eslint/no-restricted-globals
eslint/no-restricted-imports
eslint/no-restricted-properties
eslint/no-restricted-syntax
eslint/no-return-assign
eslint/no-script-url
eslint/no-self-compare
eslint/no-sequences
eslint/no-shadow
eslint/no-template-curly-in-string
eslint/no-ternary
eslint/no-throw-literal
eslint/no-unassigned-vars
🚫 eslint/no-undef-init #6456, unicorn/no-useless-undefined covers this case.
eslint/no-undefined
eslint/no-underscore-dangle
eslint/no-unmodified-loop-condition
eslint/no-unneeded-ternary
eslint/no-unreachable-loop
eslint/no-unused-expressions
eslint/no-use-before-define
eslint/no-useless-assignment
eslint/no-useless-call
✅⏳ eslint/no-useless-computed-key
eslint/no-useless-concat
eslint/no-useless-constructor
eslint/no-useless-rename
✅⏳ eslint/no-useless-return
eslint/no-var
eslint/no-void
eslint/no-warning-comments
eslint/object-shorthand
eslint/one-var
eslint/operator-assignment
eslint/prefer-arrow-callback
eslint/prefer-const
eslint/prefer-destructuring
eslint/prefer-exponentiation-operator
eslint/prefer-named-capture-group
eslint/prefer-numeric-literals
eslint/prefer-object-has-own
eslint/prefer-object-spread
eslint/prefer-promise-reject-errors
eslint/prefer-regex-literals
eslint/prefer-rest-params
eslint/prefer-spread
✅⏳ eslint/prefer-template
eslint/preserve-caught-error
eslint/radix
eslint/require-atomic-updates
eslint/require-await
eslint/require-unicode-regexp
eslint/sort-imports
eslint/sort-keys
✅⏳ eslint/sort-vars
eslint/strict
eslint/symbol-description
eslint/unicode-bom
eslint/vars-on-top
eslint/yoda

✅ = Implemented, 🚫 = Not intending to implement, ⏳ = Fix pending

Deprecated rules

✅: 0, 🚫: 93, ⏳: 0 / total: 93
Status Name Rationale
🚫 eslint/array-bracket-newline Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/array-bracket-spacing Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/array-element-newline Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/arrow-parens Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/arrow-spacing Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/block-spacing Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/brace-style Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/callback-return Deprecated, replaced by node/callback-return.
🚫 eslint/comma-dangle Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/comma-spacing Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/comma-style Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/computed-property-spacing Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/dot-location Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/eol-last Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/func-call-spacing Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/function-call-argument-newline Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/function-paren-newline Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/generator-star-spacing Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/global-require Deprecated, replaced by node/global-require.
🚫 eslint/handle-callback-err Deprecated, replaced by node/handle-callback-err.
🚫 eslint/id-blacklist Replaced by eslint/id-denylist.
🚫 eslint/implicit-arrow-linebreak Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/indent Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/indent-legacy Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/jsx-quotes Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/key-spacing Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/keyword-spacing Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/line-comment-position Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/linebreak-style Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/lines-around-comment Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/lines-around-directive Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/lines-between-class-members Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/max-len Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/max-statements-per-line Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/multiline-comment-style Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/multiline-ternary Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/new-parens Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/newline-after-var Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/newline-before-return Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/newline-per-chained-call Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/no-buffer-constructor Replaced by node/no-deprecated-api.
🚫 eslint/no-catch-shadow Replaced by eslint/no-shadow.
🚫 eslint/no-confusing-arrow Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/no-extra-parens Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/no-extra-semi Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/no-floating-decimal Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/no-mixed-operators Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/no-mixed-requires Deprecated, replaced by node/no-mixed-requires.
🚫 eslint/no-mixed-spaces-and-tabs Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/no-multi-spaces Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/no-multiple-empty-lines Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/no-native-reassign Replaced by eslint/no-global-assign, which we support.
🚫 eslint/no-negated-in-lhs Replaced by eslint/no-unsafe-negation, which we support.
🚫 eslint/no-new-object Replaced by eslint/no-object-constructor, which we support.
🚫 eslint/no-new-require Deprecated, replaced by node/no-new-require, which we already support.
🚫 eslint/no-new-symbol Deprecated as of ESLint v9, but for a while disable manually.
🚫 eslint/no-path-concat Deprecated, replaced by node/no-path-concat.
🚫 eslint/no-process-env Deprecated, replaced by node/no-process-env, which we already support.
🚫 eslint/no-process-exit Deprecated, replaced by node/no-process-exit.
🚫 eslint/no-restricted-modules Deprecated, replaced by node/no-restricted-require.
🚫 eslint/no-return-await Deprecated, not recommended anymore by ESLint.
🚫 eslint/no-spaced-func Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/no-sync Deprecated, replaced by node/no-sync.
🚫 eslint/no-tabs Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/no-trailing-spaces Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/no-whitespace-before-property Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/nonblock-statement-body-position Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/object-curly-newline Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/object-curly-spacing Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/object-property-newline Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/one-var-declaration-per-line Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/operator-linebreak Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/padded-blocks Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/padding-line-between-statements Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/prefer-reflect Deprecated, not recommended anymore by ESLint.
🚫 eslint/quote-props Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/quotes Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/rest-spread-spacing Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/semi Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/semi-spacing Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/semi-style Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/space-before-blocks Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/space-before-function-paren Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/space-in-parens Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/space-infix-ops Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/space-unary-ops Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/spaced-comment Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/switch-colon-spacing Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/template-curly-spacing Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/template-tag-spacing Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/wrap-iife Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/wrap-regex Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.
🚫 eslint/yield-star-spacing Deprecated stylistic rule, can be used via the stylistic eslint plugin as a JS Plugin if necessary.

✅ = Implemented, 🚫 = Not intending to implement, ⏳ = Fix pending

Sub-issues

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-linterArea - Lintergood first issueExperience Level - Good for newcomers

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions