Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

☂️ eslint core #479

Open
Tracked by #20279
Boshen opened this issue Jun 26, 2023 · 4 comments
Open
Tracked by #20279

☂️ eslint core #479

Boshen opened this issue Jun 26, 2023 · 4 comments
Labels
A-linter Area - Linter good first issue Experience Level - Good for newcomers

Comments

@Boshen
Copy link
Member

Boshen commented Jun 26, 2023

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 tracking issue for eslint.

There are 197(+ 93 deprecated) rules.

  • 2/61 recommended rules are remaining as TODO
  • 69/136 not recommended rules are remaining as TODO

To get started, run the following command:

just new-eslint-rule <RULE_NAME>

Then register the rule in crates/oxc_linter/src/rules.rs and also declare_all_lint_rules at the bottom.

Recommended rules

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

✨ = Implemented, 🚫 = No need to implement

Not recommended rules

✨: 66, 🚫: 1 / total: 136
Status Name Docs
eslint/accessor-pairs https://eslint.org/docs/latest/rules/accessor-pairs
eslint/array-callback-return https://eslint.org/docs/latest/rules/array-callback-return
eslint/arrow-body-style https://eslint.org/docs/latest/rules/arrow-body-style
eslint/block-scoped-var https://eslint.org/docs/latest/rules/block-scoped-var
eslint/camelcase https://eslint.org/docs/latest/rules/camelcase
eslint/capitalized-comments https://eslint.org/docs/latest/rules/capitalized-comments
eslint/class-methods-use-this https://eslint.org/docs/latest/rules/class-methods-use-this
eslint/complexity https://eslint.org/docs/latest/rules/complexity
eslint/consistent-return https://eslint.org/docs/latest/rules/consistent-return
eslint/consistent-this https://eslint.org/docs/latest/rules/consistent-this
eslint/curly https://eslint.org/docs/latest/rules/curly
eslint/default-case https://eslint.org/docs/latest/rules/default-case
eslint/default-case-last https://eslint.org/docs/latest/rules/default-case-last
eslint/default-param-last https://eslint.org/docs/latest/rules/default-param-last
eslint/dot-notation https://eslint.org/docs/latest/rules/dot-notation
eslint/eqeqeq https://eslint.org/docs/latest/rules/eqeqeq
eslint/func-name-matching https://eslint.org/docs/latest/rules/func-name-matching
eslint/func-names https://eslint.org/docs/latest/rules/func-names
eslint/func-style https://eslint.org/docs/latest/rules/func-style
eslint/grouped-accessor-pairs https://eslint.org/docs/latest/rules/grouped-accessor-pairs
eslint/guard-for-in https://eslint.org/docs/latest/rules/guard-for-in
eslint/id-denylist https://eslint.org/docs/latest/rules/id-denylist
eslint/id-length https://eslint.org/docs/latest/rules/id-length
eslint/id-match https://eslint.org/docs/latest/rules/id-match
eslint/init-declarations https://eslint.org/docs/latest/rules/init-declarations
eslint/logical-assignment-operators https://eslint.org/docs/latest/rules/logical-assignment-operators
eslint/max-classes-per-file https://eslint.org/docs/latest/rules/max-classes-per-file
eslint/max-depth https://eslint.org/docs/latest/rules/max-depth
eslint/max-lines https://eslint.org/docs/latest/rules/max-lines
eslint/max-lines-per-function https://eslint.org/docs/latest/rules/max-lines-per-function
eslint/max-nested-callbacks https://eslint.org/docs/latest/rules/max-nested-callbacks
eslint/max-params https://eslint.org/docs/latest/rules/max-params
eslint/max-statements https://eslint.org/docs/latest/rules/max-statements
eslint/new-cap https://eslint.org/docs/latest/rules/new-cap
eslint/no-alert https://eslint.org/docs/latest/rules/no-alert
eslint/no-array-constructor https://eslint.org/docs/latest/rules/no-array-constructor
eslint/no-await-in-loop https://eslint.org/docs/latest/rules/no-await-in-loop
eslint/no-bitwise https://eslint.org/docs/latest/rules/no-bitwise
eslint/no-caller https://eslint.org/docs/latest/rules/no-caller
eslint/no-console https://eslint.org/docs/latest/rules/no-console
eslint/no-constructor-return https://eslint.org/docs/latest/rules/no-constructor-return
eslint/no-continue https://eslint.org/docs/latest/rules/no-continue
eslint/no-div-regex https://eslint.org/docs/latest/rules/no-div-regex
eslint/no-duplicate-imports https://eslint.org/docs/latest/rules/no-duplicate-imports
eslint/no-else-return https://eslint.org/docs/latest/rules/no-else-return
eslint/no-empty-function https://eslint.org/docs/latest/rules/no-empty-function
eslint/no-eq-null https://eslint.org/docs/latest/rules/no-eq-null
eslint/no-eval https://eslint.org/docs/latest/rules/no-eval
eslint/no-extend-native https://eslint.org/docs/latest/rules/no-extend-native
eslint/no-extra-bind https://eslint.org/docs/latest/rules/no-extra-bind
eslint/no-extra-label https://eslint.org/docs/latest/rules/no-extra-label
eslint/no-implicit-coercion https://eslint.org/docs/latest/rules/no-implicit-coercion
eslint/no-implicit-globals https://eslint.org/docs/latest/rules/no-implicit-globals
eslint/no-implied-eval https://eslint.org/docs/latest/rules/no-implied-eval
eslint/no-inline-comments https://eslint.org/docs/latest/rules/no-inline-comments
eslint/no-inner-declarations https://eslint.org/docs/latest/rules/no-inner-declarations
eslint/no-invalid-this https://eslint.org/docs/latest/rules/no-invalid-this
eslint/no-iterator https://eslint.org/docs/latest/rules/no-iterator
eslint/no-label-var https://eslint.org/docs/latest/rules/no-label-var
eslint/no-labels https://eslint.org/docs/latest/rules/no-labels
eslint/no-lone-blocks https://eslint.org/docs/latest/rules/no-lone-blocks
eslint/no-lonely-if https://eslint.org/docs/latest/rules/no-lonely-if
eslint/no-loop-func https://eslint.org/docs/latest/rules/no-loop-func
eslint/no-magic-numbers https://eslint.org/docs/latest/rules/no-magic-numbers
eslint/no-multi-assign https://eslint.org/docs/latest/rules/no-multi-assign
eslint/no-multi-str https://eslint.org/docs/latest/rules/no-multi-str
eslint/no-negated-condition https://eslint.org/docs/latest/rules/no-negated-condition
eslint/no-nested-ternary https://eslint.org/docs/latest/rules/no-nested-ternary
eslint/no-new https://eslint.org/docs/latest/rules/no-new
eslint/no-new-func https://eslint.org/docs/latest/rules/no-new-func
eslint/no-new-wrappers https://eslint.org/docs/latest/rules/no-new-wrappers
eslint/no-object-constructor https://eslint.org/docs/latest/rules/no-object-constructor
eslint/no-octal-escape https://eslint.org/docs/latest/rules/no-octal-escape
eslint/no-param-reassign https://eslint.org/docs/latest/rules/no-param-reassign
eslint/no-plusplus https://eslint.org/docs/latest/rules/no-plusplus
eslint/no-promise-executor-return https://eslint.org/docs/latest/rules/no-promise-executor-return
eslint/no-proto https://eslint.org/docs/latest/rules/no-proto
eslint/no-restricted-exports https://eslint.org/docs/latest/rules/no-restricted-exports
eslint/no-restricted-globals https://eslint.org/docs/latest/rules/no-restricted-globals
eslint/no-restricted-imports https://eslint.org/docs/latest/rules/no-restricted-imports
eslint/no-restricted-properties https://eslint.org/docs/latest/rules/no-restricted-properties
eslint/no-restricted-syntax https://eslint.org/docs/latest/rules/no-restricted-syntax
eslint/no-return-assign https://eslint.org/docs/latest/rules/no-return-assign
eslint/no-script-url https://eslint.org/docs/latest/rules/no-script-url
eslint/no-self-compare https://eslint.org/docs/latest/rules/no-self-compare
eslint/no-sequences https://eslint.org/docs/latest/rules/no-sequences
eslint/no-shadow https://eslint.org/docs/latest/rules/no-shadow
eslint/no-template-curly-in-string https://eslint.org/docs/latest/rules/no-template-curly-in-string
eslint/no-ternary https://eslint.org/docs/latest/rules/no-ternary
eslint/no-throw-literal https://eslint.org/docs/latest/rules/no-throw-literal
🚫 eslint/no-undef-init https://eslint.org/docs/latest/rules/no-undef-init
eslint/no-undefined https://eslint.org/docs/latest/rules/no-undefined
eslint/no-underscore-dangle https://eslint.org/docs/latest/rules/no-underscore-dangle
eslint/no-unmodified-loop-condition https://eslint.org/docs/latest/rules/no-unmodified-loop-condition
eslint/no-unneeded-ternary https://eslint.org/docs/latest/rules/no-unneeded-ternary
eslint/no-unreachable-loop https://eslint.org/docs/latest/rules/no-unreachable-loop
eslint/no-unused-expressions https://eslint.org/docs/latest/rules/no-unused-expressions
eslint/no-use-before-define https://eslint.org/docs/latest/rules/no-use-before-define
eslint/no-useless-assignment https://eslint.org/docs/latest/rules/no-useless-assignment
eslint/no-useless-call https://eslint.org/docs/latest/rules/no-useless-call
eslint/no-useless-computed-key https://eslint.org/docs/latest/rules/no-useless-computed-key
eslint/no-useless-concat https://eslint.org/docs/latest/rules/no-useless-concat
eslint/no-useless-constructor https://eslint.org/docs/latest/rules/no-useless-constructor
eslint/no-useless-rename https://eslint.org/docs/latest/rules/no-useless-rename
eslint/no-useless-return https://eslint.org/docs/latest/rules/no-useless-return
eslint/no-var https://eslint.org/docs/latest/rules/no-var
eslint/no-void https://eslint.org/docs/latest/rules/no-void
eslint/no-warning-comments https://eslint.org/docs/latest/rules/no-warning-comments
eslint/object-shorthand https://eslint.org/docs/latest/rules/object-shorthand
eslint/one-var https://eslint.org/docs/latest/rules/one-var
eslint/operator-assignment https://eslint.org/docs/latest/rules/operator-assignment
eslint/prefer-arrow-callback https://eslint.org/docs/latest/rules/prefer-arrow-callback
eslint/prefer-const https://eslint.org/docs/latest/rules/prefer-const
eslint/prefer-destructuring https://eslint.org/docs/latest/rules/prefer-destructuring
eslint/prefer-exponentiation-operator https://eslint.org/docs/latest/rules/prefer-exponentiation-operator
eslint/prefer-named-capture-group https://eslint.org/docs/latest/rules/prefer-named-capture-group
eslint/prefer-numeric-literals https://eslint.org/docs/latest/rules/prefer-numeric-literals
eslint/prefer-object-has-own https://eslint.org/docs/latest/rules/prefer-object-has-own
eslint/prefer-object-spread https://eslint.org/docs/latest/rules/prefer-object-spread
eslint/prefer-promise-reject-errors https://eslint.org/docs/latest/rules/prefer-promise-reject-errors
eslint/prefer-regex-literals https://eslint.org/docs/latest/rules/prefer-regex-literals
eslint/prefer-rest-params https://eslint.org/docs/latest/rules/prefer-rest-params
eslint/prefer-spread https://eslint.org/docs/latest/rules/prefer-spread
eslint/prefer-template https://eslint.org/docs/latest/rules/prefer-template
eslint/radix https://eslint.org/docs/latest/rules/radix
eslint/require-atomic-updates https://eslint.org/docs/latest/rules/require-atomic-updates
eslint/require-await https://eslint.org/docs/latest/rules/require-await
eslint/require-unicode-regexp https://eslint.org/docs/latest/rules/require-unicode-regexp
eslint/sort-imports https://eslint.org/docs/latest/rules/sort-imports
eslint/sort-keys https://eslint.org/docs/latest/rules/sort-keys
eslint/sort-vars https://eslint.org/docs/latest/rules/sort-vars
eslint/strict https://eslint.org/docs/latest/rules/strict
eslint/symbol-description https://eslint.org/docs/latest/rules/symbol-description
eslint/unicode-bom https://eslint.org/docs/latest/rules/unicode-bom
eslint/vars-on-top https://eslint.org/docs/latest/rules/vars-on-top
eslint/yoda https://eslint.org/docs/latest/rules/yoda

✨ = Implemented, 🚫 = No need to implement

Deprecated rules

✨: 0, 🚫: 1 / total: 93
Status Name Docs
eslint/array-bracket-newline https://eslint.org/docs/latest/rules/array-bracket-newline
eslint/array-bracket-spacing https://eslint.org/docs/latest/rules/array-bracket-spacing
eslint/array-element-newline https://eslint.org/docs/latest/rules/array-element-newline
eslint/arrow-parens https://eslint.org/docs/latest/rules/arrow-parens
eslint/arrow-spacing https://eslint.org/docs/latest/rules/arrow-spacing
eslint/block-spacing https://eslint.org/docs/latest/rules/block-spacing
eslint/brace-style https://eslint.org/docs/latest/rules/brace-style
eslint/callback-return https://eslint.org/docs/latest/rules/callback-return
eslint/comma-dangle https://eslint.org/docs/latest/rules/comma-dangle
eslint/comma-spacing https://eslint.org/docs/latest/rules/comma-spacing
eslint/comma-style https://eslint.org/docs/latest/rules/comma-style
eslint/computed-property-spacing https://eslint.org/docs/latest/rules/computed-property-spacing
eslint/dot-location https://eslint.org/docs/latest/rules/dot-location
eslint/eol-last https://eslint.org/docs/latest/rules/eol-last
eslint/func-call-spacing https://eslint.org/docs/latest/rules/func-call-spacing
eslint/function-call-argument-newline https://eslint.org/docs/latest/rules/function-call-argument-newline
eslint/function-paren-newline https://eslint.org/docs/latest/rules/function-paren-newline
eslint/generator-star-spacing https://eslint.org/docs/latest/rules/generator-star-spacing
eslint/global-require https://eslint.org/docs/latest/rules/global-require
eslint/handle-callback-err https://eslint.org/docs/latest/rules/handle-callback-err
eslint/id-blacklist https://eslint.org/docs/latest/rules/id-blacklist
eslint/implicit-arrow-linebreak https://eslint.org/docs/latest/rules/implicit-arrow-linebreak
eslint/indent https://eslint.org/docs/latest/rules/indent
eslint/indent-legacy https://eslint.org/docs/latest/rules/indent-legacy
eslint/jsx-quotes https://eslint.org/docs/latest/rules/jsx-quotes
eslint/key-spacing https://eslint.org/docs/latest/rules/key-spacing
eslint/keyword-spacing https://eslint.org/docs/latest/rules/keyword-spacing
eslint/line-comment-position https://eslint.org/docs/latest/rules/line-comment-position
eslint/linebreak-style https://eslint.org/docs/latest/rules/linebreak-style
eslint/lines-around-comment https://eslint.org/docs/latest/rules/lines-around-comment
eslint/lines-around-directive https://eslint.org/docs/latest/rules/lines-around-directive
eslint/lines-between-class-members https://eslint.org/docs/latest/rules/lines-between-class-members
eslint/max-len https://eslint.org/docs/latest/rules/max-len
eslint/max-statements-per-line https://eslint.org/docs/latest/rules/max-statements-per-line
eslint/multiline-comment-style https://eslint.org/docs/latest/rules/multiline-comment-style
eslint/multiline-ternary https://eslint.org/docs/latest/rules/multiline-ternary
eslint/new-parens https://eslint.org/docs/latest/rules/new-parens
eslint/newline-after-var https://eslint.org/docs/latest/rules/newline-after-var
eslint/newline-before-return https://eslint.org/docs/latest/rules/newline-before-return
eslint/newline-per-chained-call https://eslint.org/docs/latest/rules/newline-per-chained-call
eslint/no-buffer-constructor https://eslint.org/docs/latest/rules/no-buffer-constructor
eslint/no-catch-shadow https://eslint.org/docs/latest/rules/no-catch-shadow
eslint/no-confusing-arrow https://eslint.org/docs/latest/rules/no-confusing-arrow
eslint/no-extra-parens https://eslint.org/docs/latest/rules/no-extra-parens
eslint/no-extra-semi https://eslint.org/docs/latest/rules/no-extra-semi
eslint/no-floating-decimal https://eslint.org/docs/latest/rules/no-floating-decimal
eslint/no-mixed-operators https://eslint.org/docs/latest/rules/no-mixed-operators
eslint/no-mixed-requires https://eslint.org/docs/latest/rules/no-mixed-requires
eslint/no-mixed-spaces-and-tabs https://eslint.org/docs/latest/rules/no-mixed-spaces-and-tabs
eslint/no-multi-spaces https://eslint.org/docs/latest/rules/no-multi-spaces
eslint/no-multiple-empty-lines https://eslint.org/docs/latest/rules/no-multiple-empty-lines
eslint/no-native-reassign https://eslint.org/docs/latest/rules/no-native-reassign
eslint/no-negated-in-lhs https://eslint.org/docs/latest/rules/no-negated-in-lhs
eslint/no-new-object https://eslint.org/docs/latest/rules/no-new-object
eslint/no-new-require https://eslint.org/docs/latest/rules/no-new-require
🚫 eslint/no-new-symbol https://eslint.org/docs/latest/rules/no-new-symbol
eslint/no-path-concat https://eslint.org/docs/latest/rules/no-path-concat
eslint/no-process-env https://eslint.org/docs/latest/rules/no-process-env
eslint/no-process-exit https://eslint.org/docs/latest/rules/no-process-exit
eslint/no-restricted-modules https://eslint.org/docs/latest/rules/no-restricted-modules
eslint/no-return-await https://eslint.org/docs/latest/rules/no-return-await
eslint/no-spaced-func https://eslint.org/docs/latest/rules/no-spaced-func
eslint/no-sync https://eslint.org/docs/latest/rules/no-sync
eslint/no-tabs https://eslint.org/docs/latest/rules/no-tabs
eslint/no-trailing-spaces https://eslint.org/docs/latest/rules/no-trailing-spaces
eslint/no-whitespace-before-property https://eslint.org/docs/latest/rules/no-whitespace-before-property
eslint/nonblock-statement-body-position https://eslint.org/docs/latest/rules/nonblock-statement-body-position
eslint/object-curly-newline https://eslint.org/docs/latest/rules/object-curly-newline
eslint/object-curly-spacing https://eslint.org/docs/latest/rules/object-curly-spacing
eslint/object-property-newline https://eslint.org/docs/latest/rules/object-property-newline
eslint/one-var-declaration-per-line https://eslint.org/docs/latest/rules/one-var-declaration-per-line
eslint/operator-linebreak https://eslint.org/docs/latest/rules/operator-linebreak
eslint/padded-blocks https://eslint.org/docs/latest/rules/padded-blocks
eslint/padding-line-between-statements https://eslint.org/docs/latest/rules/padding-line-between-statements
eslint/prefer-reflect https://eslint.org/docs/latest/rules/prefer-reflect
eslint/quote-props https://eslint.org/docs/latest/rules/quote-props
eslint/quotes https://eslint.org/docs/latest/rules/quotes
eslint/rest-spread-spacing https://eslint.org/docs/latest/rules/rest-spread-spacing
eslint/semi https://eslint.org/docs/latest/rules/semi
eslint/semi-spacing https://eslint.org/docs/latest/rules/semi-spacing
eslint/semi-style https://eslint.org/docs/latest/rules/semi-style
eslint/space-before-blocks https://eslint.org/docs/latest/rules/space-before-blocks
eslint/space-before-function-paren https://eslint.org/docs/latest/rules/space-before-function-paren
eslint/space-in-parens https://eslint.org/docs/latest/rules/space-in-parens
eslint/space-infix-ops https://eslint.org/docs/latest/rules/space-infix-ops
eslint/space-unary-ops https://eslint.org/docs/latest/rules/space-unary-ops
eslint/spaced-comment https://eslint.org/docs/latest/rules/spaced-comment
eslint/switch-colon-spacing https://eslint.org/docs/latest/rules/switch-colon-spacing
eslint/template-curly-spacing https://eslint.org/docs/latest/rules/template-curly-spacing
eslint/template-tag-spacing https://eslint.org/docs/latest/rules/template-tag-spacing
eslint/wrap-iife https://eslint.org/docs/latest/rules/wrap-iife
eslint/wrap-regex https://eslint.org/docs/latest/rules/wrap-regex
eslint/yield-star-spacing https://eslint.org/docs/latest/rules/yield-star-spacing

✨ = Implemented, 🚫 = No need to implement

This was referenced Jun 11, 2023
@Boshen Boshen changed the title ☂️ linter: eslint-recommended rules ☂️ linter: eslint recommended rules Jun 28, 2023
@Boshen Boshen self-assigned this Jun 28, 2023
@Boshen Boshen pinned this issue Jul 4, 2023
@Boshen Boshen added good first issue Experience Level - Good for newcomers A-linter Area - Linter labels Jul 5, 2023
@DonIsaac

This comment was marked as outdated.

@Boshen
Copy link
Member Author

Boshen commented Jul 16, 2023

Reasons for "No need to implement":

const NOT_SUPPORTED_RULE_NAMES = new Set([
'eslint/no-dupe-args', // superseded by strict mode
'eslint/no-octal', // superseded by strict mode
'eslint/no-with', // superseded by strict mode
'eslint/no-new-symbol', // Deprecated as of ESLint v9, but for a while disable manually
'import/no-unresolved', // Will always contain false positives due to module resolution complexity
]);

@suica
Copy link
Contributor

suica commented Jul 26, 2023

For new comers:

  1. Use just new-rule <name> to generate a rule file with test cases, as mentioned in feat(linter): eslint/no-fallthrough #597. The just new-rule <name> command will fetch the info of eslint rule with exact the same name and fill the template for you.
  2. Remember to declare the rule to crates/oxc_linter/src/rules.rs, to make sure the rule file is in the file hierarchy, otherwise the language server will not work in generated rule file, and VSCode will also complain about it.
  3. Start to implement the rule and have fun!

@Boshen Boshen unpinned this issue Oct 10, 2023
@Boshen Boshen changed the title ☂️ linter: eslint recommended rules ☂️ linter: eslint core rules Jan 26, 2024
@Boshen Boshen changed the title ☂️ linter: eslint core rules ☂️ linter: eslint core Jan 26, 2024
@Boshen Boshen changed the title ☂️ linter: eslint core ☂️ eslint core Jan 26, 2024
Boshen pushed a commit that referenced this issue Feb 4, 2024
Implements `eslint/no-this-before-super` in #479.

Closes #2279
Boshen added a commit that referenced this issue Feb 21, 2024
Part of: #479 

docs: https://eslint.org/docs/latest/rules/no-new-wrappers

I am unsure of what do do with 2 of the eslint tests that use
`languageOptions: { globals: { String: "off" } }` and `/* global
Boolean:off */`.

I've commented them out as of now.

---------

Co-authored-by: Boshen <boshenc@gmail.com>
jordan-boyer added a commit to jordan-boyer/oxc that referenced this issue Jul 3, 2024
jordan-boyer added a commit to jordan-boyer/oxc that referenced this issue Jul 3, 2024
jordan-boyer added a commit to jordan-boyer/oxc that referenced this issue Jul 4, 2024
jordan-boyer added a commit to jordan-boyer/oxc that referenced this issue Jul 4, 2024
DonIsaac pushed a commit that referenced this issue Jul 5, 2024
Implementing rule https://eslint.org/docs/latest/rules/no-undefined

This is my first time contributing here, I wanted to started with a
simple rule before contributing more.

related to #479
DonIsaac added a commit that referenced this issue Aug 31, 2024
Related to #479

---------

Co-authored-by: Don Isaac <donald.isaac@gmail.com>
DonIsaac added a commit that referenced this issue Sep 6, 2024
Contributing to #479 !

Rule Details: [link](https://eslint.org/docs/latest/rules/no-alert)

Am new to the internals of parsers and linters so I kept the
implementation similar to ESLint's source code

Commented out the `globalThis` test cases in the pass array meant for
pre-ES2020 before `globalThis` was introduced, having clarified in the
Discord that it's ok to treat the built-in `globalThis` as always
present.

---------

Co-authored-by: Don Isaac <donald.isaac@gmail.com>
DonIsaac pushed a commit that referenced this issue Sep 11, 2024
This PR adds the `eslint/sort-keys` implementation as part of #479 

Note: two tests are commented out. I was not able to model this behavior
properly. I would be happy to have some assistance there.
IWANABETHATGUY pushed a commit that referenced this issue Sep 12, 2024
- part of #479

This PR implements the `no-plusplus` rule and is more-or-less a direct
port of the ESLint version of the rule.

---------

Co-authored-by: Don Isaac <donald.isaac@gmail.com>
DonIsaac pushed a commit that referenced this issue Sep 19, 2024
- part of #479

This implements the `no-extend-native` rule from the ESLint core
ruleset. This was translated based on the rule source code from the
ESLint codebase. That means some oddity, such as treating any
capitalized identifier (like `Math`) as a global object, is preserved.
So even though `Math.prototype` doesn't exist in reality, we still
report it as an error. This is probably okay given that such code
doesn't make sense anyway.
DonIsaac pushed a commit that referenced this issue Sep 20, 2024
- part of #479

The bulk of this rule is closely based on the logic from the original ESLint rule. One major difference between this implementation and the original though is the lack of a tokenizer. ESLint uses a proper tokenizer to find identifers, parentheses, brackets, and other tokens. For this rule, I opted to just manually search for the characters we might expect to find. I'm not sure how this will hold up in the real world, I expect it could lead to some missing cases potentially, but it at least works for all of the given test cases.
DonIsaac pushed a commit that referenced this issue Sep 27, 2024
This PR implements the not-recomennded eslint rule `no-return-assign`
#479

---------

Co-authored-by: Cameron <cameron.clark@hey.com>
@nrayburn-tech
Copy link
Contributor

unicorn/no-nested-ternary has been implemented. Should eslint/no-nested-ternary be marked as complete? Or something else done for this rule?

The eslint version doesn't allow any nesting. The unicorn version allows nesting 1 level, as long as it is wrapped in parenthesis.
https://eslint.org/docs/latest/rules/no-nested-ternary
https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-nested-ternary.md

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-linter Area - Linter good first issue Experience Level - Good for newcomers
Projects
None yet
Development

No branches or pull requests

4 participants