Background
With the stack of #22907, we finally support rule configuration in the oxlint schema file and Typescript declaration.
Problem
Some rules are skipped at the moment (see https://github.com/oxc-project/oxc/blob/66fa45ec9d70c6977b045f7f38e0587cdcda15ea/crates/oxc_linter/src/utils/schemars.rs) because:
Task
- remove only one rule from
NO_VERIFIED_VALID_SCHEMA array
- run
just linter-schema-json && just linter-config-ts
- Verify that the rule configuration follow atleast:
- iterate over
crates/oxc_linter/src/rules/<plugin_name>/<rule_name>.rs until the config is well formed (the config = X value from declare_oxc_lint! must need the change)
update the schema snapshot with cargo insta test -p website_linter --accept
Notice
Please skip the rules which needs schema generator or ts config generator changes
We want to collect all "special" rules first and calculate a plan to fix them alltogether.
Remaining rules
This list is not up to date, look into NO_VERIFIED_VALID_SCHEMA in oxc_linter/src/utils/schemars.rs for an up to date list:
Background
With the stack of #22907, we finally support rule configuration in the oxlint schema file and Typescript declaration.
Problem
Some rules are skipped at the moment (see https://github.com/oxc-project/oxc/blob/66fa45ec9d70c6977b045f7f38e0587cdcda15ea/crates/oxc_linter/src/utils/schemars.rs) because:
serde_json/schemarscrateTask
NO_VERIFIED_VALID_SCHEMAarrayjust linter-schema-json && just linter-config-ts[k: string]: unknown;should be generatedcrates/oxc_linter/src/rules/<plugin_name>/<rule_name>.rsuntil the config is well formed (theconfig = Xvalue fromdeclare_oxc_lint!must need the change)update the schema snapshot withcargo insta test -p website_linter --acceptNotice
Please skip the rules which needs schema generator or ts config generator changes
We want to collect all "special" rules first and calculate a plan to fix them alltogether.
Remaining rules
This list is not up to date, look into
NO_VERIFIED_VALID_SCHEMAinoxc_linter/src/utils/schemars.rsfor an up to date list:eslint/capitalized-comments#22984eslint/class-methods-use-this#22959eslint/complexity#22960eslint/id-length#22963eslint/id-match#22987eslint/no-empty-function#22988eslint/no-constant-condition#22991eslint/no-inner-declarations#23016eslint/no-magic-numbers#23017eslint/no-param-reassign#23018eslint/no-restricted-exports#23020eslint/no-shadow#23072eslint/no-unused-vars#23073eslint/no-warning-comments#23075eslint/operator-assignment#23080eslint/prefer-const#23081eslint/radix#23082eslint/sort-vars#23090eslint/prefer-destructuring#23410MixedTupleRuleConfig#23396eslint/no-use-before-define#23129eslint/no-restricted-properties#23619import/prefer-default-export#23091import/extensions#23557import-max-dependencies#23096jest/vitest/consistent-test-it#23103jest/vitest/consistent-test-it#23103jest/vitest/expect-expect#23104jest/vitest/expect-expect#23104jest/vitest/max-expects#23105jest/vitest/max-expects#23105jest/vitest/max-nested-describe#23131jest/vitest/max-nested-describe#23131jest/no-deprecated-functions#23136jest/vitest/no-hooks#23177jest/vitest/no-hooks#23177jest/vitest/no-large-snapshots#23178jest/vitest/no-large-snapshots#23178jest/vitest/no-standalone-expect#23179jest/vitest/no-standalone-expect#23179jest/vitest/prefer-expect-assertions#23181jest/vitest/prefer-expect-assertions#23181jest/vitest/prefer-snapshot-hint#23183jest/vitest/prefer-snapshot-hint#23183jest/prefer-ending-with-an-expect#23180jest/vitest/require-top-level-describe#23184jest/vitest/require-top-level-describe#23184jest/vitest/valid-expect#23185jest/vitest/valid-expect#23185jest/vitest/no-restricted-*-methods#23246jest/vitest/no-restricted-*-methods#23246jest/vitest/no-restricted-matchers#23247jest/vitest/no-restricted-matchers#23247oxc/no-async-endpoint-handlers#23251vue/define-props-destructuring#23252vitest/consistent-each-for#23294vitest/consistent-test-filename#23293vitest/consistent-vitest-vi#23292vitest/prefer-import-in-mock#23291promise/catch-or-return#23297promise/param-names#23298jsx_a11y/no-noninteractive-tabindex#23337jsx_a11y/alt-text#23369jsx-a11y/control-has-associated-labelconfig withDefaultRuleConfig#23373jsx-a11y/img-redundant-alt#23374jsx-a11y/label-has-associated-control#23376jsx-a11y/media-has-caption#23377jsx_a11y/no-distracting-elements#23379jsx_a11y/no-interactive-element-to-noninteractive-role#23382jsx_a11y/no-noninteractive-element-to-interactive-role#23384anchor-is-validconfig with upstream #23446react/jsx-props-no-spreading#23276react/no-object-type-as-default-prop#23279react/no-unstable-nested-components#23287react/jsx-no-target-blank#23345react/jsx-filename-extension#23315react/no-did-update-set-state#23357react/exhaustive-deps#23372react/jsx-handler-names#23393no-array-fill-with-reference-typerule #23397react/jsx-no-script-url#23475react_perf/jsx-no-new-object-as-prop#23368typescript/no-invalid-void-type#23307typescript/no-misused-promises#23306typescript/no-unnecessary-condition#23305typescript/parameter-properties#23304typescript/prefer-nullish-coalescing#23302typescript/prefer-string-starts-ends-with#23301typescript/triple-slash-reference#23300typescript/no-duplicate-type-constituents#23308typescript/consistent-type-assertions#23349typescript/consistent-type-imports#23348typescript/array-type#23355typescript/ban-ts-comment#23354consistent-generic-constructors#23353typescript/no-restricted-types#23381unicorn/catch-error-name#23137typescript/no-empty-object-type#23309unicorn/explicit-length-check#23155unicorn/no-instanceof-builtins#23225unicorn/prefer-object-from-entries#23249unicorn/prefer-at#23366unicorn/import-style#23386unicorn/numeric-separators-style#23554node/callback-return#23615// blocked by https://github.com/oxc-project/oxc/issues/23248// blocked by https://github.com/oxc-project/oxc/issues/23186// blocked by https://github.com/oxc-project/oxc/issues/23186// blocked by https://github.com/oxc-project/oxc/issues/23186// blocked by https://github.com/oxc-project/oxc/issues/23186// blocked by https://github.com/oxc-project/oxc/issues/23356eslint/no-restricted-import#23642