Skip to content

Conversation

@camc314
Copy link
Contributor

@camc314 camc314 commented Nov 23, 2025

Add functionality to detect and display linter rules that have pending
auto-fixes in the automated GitHub tracking issues.

  • Add readAllPendingFixRuleNames() to scan rule files for pending keyword
  • Update RuleEntry type to include isPendingFix field
  • Add updatePendingFixStatus() to mark implemented rules with pending fixes
  • Update markdown renderer to show ⏳ emoji for pending fixes
  • Add pending fix counts to summary and table headers
  • Preserve isPendingFix status across plugin sync operations

Fixes #15977

@github-actions github-actions bot added the C-enhancement Category - New feature or request label Nov 23, 2025
Copy link
Contributor Author

camc314 commented Nov 23, 2025


How to use the Graphite Merge Queue

Add either label to this PR to merge it via the merge queue:

  • 0-merge - adds this PR to the back of the merge queue
  • hotfix - for urgent hot fixes, skip the queue and merge this PR next

You must have a Graphite account in order to use the merge queue. Sign up using this link.

An organization admin has enabled the Graphite Merge Queue in this repository.

Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue.

This stack of pull requests is managed by Graphite. Learn more about stacking.

@camc314 camc314 changed the title feat(lint_rules): track rules with pending fixes in automated issues feat(tasks/lint-rules): track rules with pending fixes in automated issues Nov 23, 2025
@camc314
Copy link
Contributor Author

camc314 commented Nov 23, 2025

Example:

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-plugin-unicorn.

There are 141(+ 3 deprecated) rules.

  • 15/132 recommended rules are remaining as TODO
    • 30 of which have pending fixes
  • 8/9 not recommended rules are remaining as TODO

To get started, run the following command:

just new-unicorn-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

✨: 115, 🚫: 2, ⏳: 30 / total: 132
Status Name Docs
unicorn/catch-error-name https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/catch-error-name.md
unicorn/consistent-assert https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/consistent-assert.md
unicorn/consistent-date-clone https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/consistent-date-clone.md
unicorn/consistent-empty-array-spread https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/consistent-empty-array-spread.md
unicorn/consistent-existence-index-check https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/consistent-existence-index-check.md
✨⏳ unicorn/consistent-function-scoping https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/consistent-function-scoping.md
unicorn/empty-brace-spaces https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/empty-brace-spaces.md
unicorn/error-message https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/error-message.md
unicorn/escape-case https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/escape-case.md
unicorn/expiring-todo-comments https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/expiring-todo-comments.md
unicorn/explicit-length-check https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/explicit-length-check.md
unicorn/filename-case https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/filename-case.md
unicorn/import-style https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/import-style.md
unicorn/new-for-builtins https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/new-for-builtins.md
unicorn/no-abusive-eslint-disable https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-abusive-eslint-disable.md
unicorn/no-accessor-recursion https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-accessor-recursion.md
unicorn/no-anonymous-default-export https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-anonymous-default-export.md
✨⏳ unicorn/no-array-callback-reference https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-array-callback-reference.md
✨⏳ unicorn/no-array-for-each https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-array-for-each.md
✨⏳ unicorn/no-array-method-this-argument https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-array-method-this-argument.md
unicorn/no-array-reduce https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-array-reduce.md
unicorn/no-array-reverse https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-array-reverse.md
unicorn/no-array-sort https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-array-sort.md
unicorn/no-await-expression-member https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-await-expression-member.md
unicorn/no-await-in-promise-methods https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-await-in-promise-methods.md
unicorn/no-console-spaces https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-console-spaces.md
unicorn/no-document-cookie https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-document-cookie.md
unicorn/no-empty-file https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-empty-file.md
🚫 unicorn/no-for-loop https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-for-loop.md
unicorn/no-hex-escape https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-hex-escape.md
unicorn/no-immediate-mutation https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-immediate-mutation.md
✨⏳ unicorn/no-instanceof-builtins https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-instanceof-builtins.md
unicorn/no-invalid-fetch-options https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-invalid-fetch-options.md
unicorn/no-invalid-remove-event-listener https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-invalid-remove-event-listener.md
unicorn/no-lonely-if https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-lonely-if.md
unicorn/no-magic-array-flat-depth https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-magic-array-flat-depth.md
🚫 unicorn/no-named-default https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-named-default.md
✨⏳ unicorn/no-negated-condition https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-negated-condition.md
✨⏳ unicorn/no-negation-in-equality-check https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-negation-in-equality-check.md
unicorn/no-nested-ternary https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-nested-ternary.md
✨⏳ unicorn/no-new-array https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-new-array.md
✨⏳ unicorn/no-new-buffer https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-new-buffer.md
unicorn/no-null https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-null.md
unicorn/no-object-as-default-parameter https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-object-as-default-parameter.md
✨⏳ unicorn/no-process-exit https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-process-exit.md
unicorn/no-single-promise-in-promise-methods https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-single-promise-in-promise-methods.md
unicorn/no-static-only-class https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-static-only-class.md
unicorn/no-thenable https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-thenable.md
unicorn/no-this-assignment https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-this-assignment.md
✨⏳ unicorn/no-typeof-undefined https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-typeof-undefined.md
✨⏳ unicorn/no-unnecessary-array-flat-depth https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-unnecessary-array-flat-depth.md
unicorn/no-unnecessary-array-splice-count https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-unnecessary-array-splice-count.md
unicorn/no-unnecessary-await https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-unnecessary-await.md
unicorn/no-unnecessary-polyfills https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-unnecessary-polyfills.md
unicorn/no-unnecessary-slice-end https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-unnecessary-slice-end.md
unicorn/no-unreadable-array-destructuring https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-unreadable-array-destructuring.md
unicorn/no-unreadable-iife https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-unreadable-iife.md
✨⏳ unicorn/no-useless-collection-argument https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-useless-collection-argument.md
✨⏳ unicorn/no-useless-error-capture-stack-trace https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-useless-error-capture-stack-trace.md
unicorn/no-useless-fallback-in-spread https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-useless-fallback-in-spread.md
✨⏳ unicorn/no-useless-length-check https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-useless-length-check.md
unicorn/no-useless-promise-resolve-reject https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-useless-promise-resolve-reject.md
unicorn/no-useless-spread https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-useless-spread.md
✨⏳ unicorn/no-useless-switch-case https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-useless-switch-case.md
unicorn/no-useless-undefined https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-useless-undefined.md
unicorn/no-zero-fractions https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-zero-fractions.md
unicorn/number-literal-case https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/number-literal-case.md
unicorn/numeric-separators-style https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/numeric-separators-style.md
✨⏳ unicorn/prefer-add-event-listener https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-add-event-listener.md
✨⏳ unicorn/prefer-array-find https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-array-find.md
unicorn/prefer-array-flat https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-array-flat.md
unicorn/prefer-array-flat-map https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-array-flat-map.md
✨⏳ unicorn/prefer-array-index-of https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-array-index-of.md
unicorn/prefer-array-some https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-array-some.md
unicorn/prefer-at https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-at.md
unicorn/prefer-bigint-literals https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-bigint-literals.md
✨⏳ unicorn/prefer-blob-reading-methods https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-blob-reading-methods.md
unicorn/prefer-class-fields https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-class-fields.md
unicorn/prefer-classlist-toggle https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-classlist-toggle.md
unicorn/prefer-code-point https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-code-point.md
unicorn/prefer-date-now https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-date-now.md
unicorn/prefer-default-parameters https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-default-parameters.md
unicorn/prefer-dom-node-append https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-dom-node-append.md
✨⏳ unicorn/prefer-dom-node-dataset https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-dom-node-dataset.md
unicorn/prefer-dom-node-remove https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-dom-node-remove.md
unicorn/prefer-dom-node-text-content https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-dom-node-text-content.md
unicorn/prefer-event-target https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-event-target.md
unicorn/prefer-export-from https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-export-from.md
✨⏳ unicorn/prefer-global-this https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-global-this.md
✨⏳ unicorn/prefer-includes https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-includes.md
unicorn/prefer-keyboard-event-key https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-keyboard-event-key.md
✨⏳ unicorn/prefer-logical-operator-over-ternary https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-logical-operator-over-ternary.md
unicorn/prefer-math-min-max https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-math-min-max.md
✨⏳ unicorn/prefer-math-trunc https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-math-trunc.md
✨⏳ unicorn/prefer-modern-dom-apis https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-modern-dom-apis.md
✨⏳ unicorn/prefer-modern-math-apis https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-modern-math-apis.md
unicorn/prefer-module https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-module.md
✨⏳ unicorn/prefer-native-coercion-functions https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-native-coercion-functions.md
unicorn/prefer-negative-index https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-negative-index.md
unicorn/prefer-node-protocol https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-node-protocol.md
unicorn/prefer-number-properties https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-number-properties.md
✨⏳ unicorn/prefer-object-from-entries https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-object-from-entries.md
unicorn/prefer-optional-catch-binding https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-optional-catch-binding.md
unicorn/prefer-prototype-methods https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-prototype-methods.md
unicorn/prefer-query-selector https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-query-selector.md
unicorn/prefer-reflect-apply https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-reflect-apply.md
unicorn/prefer-regexp-test https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-regexp-test.md
✨⏳ unicorn/prefer-response-static-json https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-response-static-json.md
unicorn/prefer-set-has https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-set-has.md
unicorn/prefer-set-size https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-set-size.md
unicorn/prefer-single-call https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-single-call.md
unicorn/prefer-spread https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-spread.md
unicorn/prefer-string-raw https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-string-raw.md
unicorn/prefer-string-replace-all https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-string-replace-all.md
unicorn/prefer-string-slice https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-string-slice.md
unicorn/prefer-string-starts-ends-with https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-string-starts-ends-with.md
unicorn/prefer-string-trim-start-end https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-string-trim-start-end.md
unicorn/prefer-structured-clone https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-structured-clone.md
unicorn/prefer-switch https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-switch.md
unicorn/prefer-ternary https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-ternary.md
unicorn/prefer-top-level-await https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-top-level-await.md
unicorn/prefer-type-error https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-type-error.md
unicorn/prevent-abbreviations https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prevent-abbreviations.md
unicorn/relative-url-style https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/relative-url-style.md
unicorn/require-array-join-separator https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/require-array-join-separator.md
unicorn/require-module-attributes https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/require-module-attributes.md
unicorn/require-module-specifiers https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/require-module-specifiers.md
unicorn/require-number-to-fixed-digits-argument https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/require-number-to-fixed-digits-argument.md
unicorn/switch-case-braces https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/switch-case-braces.md
unicorn/template-indent https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/template-indent.md
unicorn/text-encoding-identifier-case https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/text-encoding-identifier-case.md
unicorn/throw-new-error https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/throw-new-error.md

✨ = Implemented, 🚫 = No need to implement, ⏳ = Fix pending

Not recommended rules

✨: 1, 🚫: 0, ⏳: 0 / total: 9
Status Name Docs
unicorn/better-regex https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/better-regex.md
unicorn/consistent-destructuring https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/consistent-destructuring.md
unicorn/custom-error-definition https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/custom-error-definition.md
unicorn/no-keyword-prefix https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-keyword-prefix.md
unicorn/no-unused-properties https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/no-unused-properties.md
unicorn/prefer-import-meta-properties https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-import-meta-properties.md
unicorn/prefer-json-parse-buffer https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/prefer-json-parse-buffer.md
unicorn/require-post-message-target-origin https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/require-post-message-target-origin.md
unicorn/string-content https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/rules/string-content.md

✨ = Implemented, 🚫 = No need to implement, ⏳ = Fix pending

Deprecated rules

✨: 2, 🚫: 0, ⏳: 0 / total: 3
Status Name Docs
unicorn/no-instanceof-array https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/deprecated-rules.md#no-instanceof-array
unicorn/no-length-as-slice-end https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/deprecated-rules.md#no-length-as-slice-end
unicorn/no-array-push-push https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v62.0.0/docs/deprecated-rules.md#no-array-push-push

✨ = Implemented, 🚫 = No need to implement, ⏳ = Fix pending

@camc314 camc314 force-pushed the c/11-23-feat_lint_rules_track_rules_with_pending_fixes_in_automated_issues branch from 6a17791 to 49954eb Compare November 23, 2025 12:56
@camc314 camc314 marked this pull request as ready for review November 23, 2025 12:57
Copilot AI review requested due to automatic review settings November 23, 2025 12:57
Copilot finished reviewing on behalf of camc314 November 23, 2025 12:59
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds functionality to track and display linter rules that have pending auto-fixes in the automated GitHub tracking issues. The implementation scans rule files to detect the pending keyword in declare_oxc_lint! macro declarations and displays this information with a ⏳ emoji in the generated markdown.

Key changes:

  • Added readAllPendingFixRuleNames() to recursively scan Rust rule files and extract rules marked with pending fixes
  • Extended RuleEntry type and related functions to track isPendingFix status
  • Updated markdown renderer to display pending fix counts and indicators

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.

File Description
tasks/lint_rules/src/oxlint-rules.mjs Added readAllPendingFixRuleNames() function to scan rule files for pending fixes, added updatePendingFixStatus() to mark implemented rules with pending fixes, updated RuleEntry type to include isPendingFix field, and preserved isPendingFix status in plugin sync functions
tasks/lint_rules/src/markdown-renderer.mjs Updated CounterView type to include isPendingFix count, modified renderCounters() to display pending fix statistics, updated renderRulesList() to show ⏳ emoji for pending fixes, and added pending fix counts to all counter objects
tasks/lint_rules/src/main.mjs Imported and called updatePendingFixStatus() to populate pending fix data in the rule processing pipeline

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Add functionality to detect and display linter rules that have pending
auto-fixes in the automated GitHub tracking issues.

- Add readAllPendingFixRuleNames() to scan rule files for `pending` keyword
- Update RuleEntry type to include isPendingFix field
- Add updatePendingFixStatus() to mark implemented rules with pending fixes
- Update markdown renderer to show ⏳ emoji for pending fixes
- Add pending fix counts to summary and table headers
- Preserve isPendingFix status across plugin sync operations

Resolves #15977
@camc314 camc314 force-pushed the c/11-23-feat_lint_rules_track_rules_with_pending_fixes_in_automated_issues branch from 49954eb to 5c41c26 Compare November 23, 2025 13:10
Copy link
Contributor

@connorshea connorshea left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@connorshea connorshea merged commit b8bf404 into main Nov 24, 2025
18 checks passed
@connorshea connorshea deleted the c/11-23-feat_lint_rules_track_rules_with_pending_fixes_in_automated_issues branch November 24, 2025 01:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

C-enhancement Category - New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

linter: Update automated issues for linter rule ports to also track pending fixes

3 participants