[eslint-refiner] ESLint Refiner Daily Report — 2026-07-15 #45651
Closed
Replies: 1 comment
-
|
This discussion has been marked as outdated by ESLint Refiner. A newer discussion is available at Discussion #45930. |
Beta Was this translation helpful? Give feedback.
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
Reviewed the two newest ESLint factory rules that had never been analyzed before (identified as the README-undocumented set). The rule count has grown 12 → 17 since the last recorded run (2026-07-08); note the state was stale — a Refiner run also happened on 2026-07-14 (discussion #45388) and its findings are already tracked as open issues.
Filed 2 non-duplicate refinement issues (quality over the cap of 3), both grounded in real call sites in
actions/setup/js.Key metrics
gh-aw-custom/*, allwarn)no-throw-plain-object,no-core-exportvariable-non-string)Filed issues
1.
no-throw-plain-object— exempt intentional JSON-RPC error throws (HIGH)100% of the sites this rule flags in the linted corpus are the deliberate JSON-RPC error idiom
throw { code: <negative int>, message: <string>, data?: {...} }— 22 sites acrossmcp_server_core.cjs(10) andsafe_outputs_handlers.cjs(12). These objects are consumed by field, not by stack trace: the dispatcher catch atmcp_server_core.cjs:828-842readserr.code/err.messageto build a conformant JSON-RPC response. There are currently zero accidental ad-hoc object throws for the rule to catch, so every warning it produces is noise on intentional protocol code. Proposed: exempt the JSON-RPC shape while keeping the regression guard for genuine bad throws.2.
no-core-exportvariable-non-string— recognize thecoreObjalias (MED)The rule only matches
callee.object.name === "core", so it is structurally blind tocoreObj.exportVariable(...)— diverging from the plugin's ownCORE_ALIASES = {core, coreObj}convention used byrequire-return-after-core-setfailedandrequire-await-core-summary-write. Grounded blind sites:parse_mcp_gateway_log.cjs:214/220. Both currently pass strings (.toFixed/String), so this is a coverage/consistency gap, not a live bug — filed accordingly.Reviewed but NOT filed (grounded reasoning)
require-spawnsync-error-checkfalse-positive angle — Distinct from open issue [Code Quality] Fix ESLint require-spawnsync-error-check: misses destructured spawnSync and weak error guards #45586 (which targets false negatives): the rule flags status-inequality guards likeif (result.status !== 0) throweven thoughstatus !== 0already treats spawn failure (status === null) as fatal. Atartifact_client.cjs:163/170the code throws a clear"zip command is required"message on ENOENT; following the rule's suggestion would degrade that diagnostic. However this is in tension with [Code Quality] Fix ESLint require-spawnsync-error-check: misses destructured spawnSync and weak error guards #45586 (which callsartifact_client.cjsa true-positive site), and there IS a genuine true positive atapply_samples.cjs:97("exit ${result.status}"→ misleading"exit null"). Raising here rather than filing a competing issue.no-core-exportvariable-non-stringvalue gaps — Inherits the siblingno-core-setoutput-non-stringgap (misses unary/negative numeric literals, e.g.-1). No grounded non-stringexportVariablesite exists in the corpus (all values are strings), so not filed per the ground-before-filing discipline.no-throw-plain-object/require-return-after-core-setfailedstatic-flow analysis — the complex control-flow rule appears robust; no grounded defect found without a live lint run (npm is firewalled in this environment).Method & environment notes
No live lint is possible (no
node_modules/dist, npm firewalled). All findings are grounded statically via grep over non-test.cjsfiles inactions/setup/js(the config ignores*.test.cjs) plus the rule sources and tests. Strategy and per-run history persisted to repo-memory (state.json+history.jsonl, validated at 11 KB / 12 KB limit).Next actions
index.tsrules against the reviewed set; lead with any newer/undocumented rule.mkdirSync/readdirSyncunwrapped) orString.replacewithout/g.References:
Beta Was this translation helpful? Give feedback.
All reactions