[eslint-refiner] ESLint Refiner — Daily Report 2026-07-21 #46995
Closed
Replies: 1 comment
|
This discussion has been marked as outdated by ESLint Refiner. A newer discussion is available at Discussion #47213. |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Overview
The
eslint-factorycustom-rule set has grown from 12 rules (last review 2026-07-08) to 23 rules. This run reviewed all 11 newly-added rules (fromrequire-mkdirsync-try-catchthroughrequire-execsync-try-catch) plus the sharedcore-method-resolve/core-aliases/try-catch-rule-utilshelpers.Key context: the target codebase
actions/setup/js/**currently has no live sites for any of the newest rules — noprocess.exit,core.error,execSync/child_process, orconsole.*in non-test.cjsfiles. So the newest rules act purely as regression guards, and every finding this run is a rule-logic precision defect (false negative / false positive / unsafe autofix), not a violation in shipped code.Metrics
Refinement tasks filed
require-return-after-core-setfailed— FN: bareswitch-case fall-through wherecore.setFailed()is the last consequent statement is missed (the braced andif-wrapped variants are correctly flagged — an inconsistency). Plus a minor FP on a trailing hoisted function declaration. High confidence, reuses existingfindContinuationOutsideBlockmachinery.no-core-error-then-process-exit— FN: detection is adjacency-only, so any statement betweencore.error(...)andprocess.exit(nonzero)(e.g. acore.summarywrite) defeats it. Proposed scan-forward that stops at an interveningcore.setFailedor control-transfer to avoid false positives.prefer-core-logging— Unsafe autofix: the suggestion rewritesconsole.log(obj)→core.info(obj), which coerces non-strings to"[object Object]". The report is correct; the suggestion should be restricted to statically-string arguments.Rules judged sound / lower-priority items (unfiled)
Sound:
require-execsync-try-catch(full scope-resolution incl. destructure/alias/namespace),require-spawnsync-error-check(thorough guard-alias analysis),no-exec-interpolated-command,require-new-url-try-catch,no-throw-plain-object,no-core-exportvariable-non-string, and the sharedcore-method-resolve/core-aliaseshelpers.Lower-priority, ungrounded (deferred until live sites appear): niche missed shapes —
new globalThis.URL(...)/new node:url.URL(...), inlinerequire('fs').mkdirSync(...), spread-arg forms; a shadowing FP inno-github-request-interpolated-routefor a parameter namedgithub; and anif/else-both-transfer FP inrequire-return-after-core-setfailed.Documentation debt
eslint-factory/README.mddocuments 20 of 23 rules. The three undocumented rules are exactly the three newest:require-execsync-try-catch,no-exec-interpolated-command,no-core-error-then-process-exit. Recommend adding their entries; if still absent next run, this will be filed as a dedicated doc issue.Next actions
core.error→exitinvalid case;console.log(obj)reported without a suggestion).References: §29806000813
All reactions