code-auditor-mcp 3.9.4 → 3.9.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +179 -0
- package/README.md +18 -0
- package/dist/analyzers/reactAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/reactAnalyzer.js +4 -1
- package/dist/analyzers/reactAnalyzer.js.map +1 -1
- package/dist/analyzers/ruleRegistry.d.ts +8 -0
- package/dist/analyzers/ruleRegistry.d.ts.map +1 -1
- package/dist/analyzers/ruleRegistry.js +20 -10
- package/dist/analyzers/ruleRegistry.js.map +1 -1
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js +22 -4
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js +23 -20
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/schema/codeAnalysis.d.ts +1 -0
- package/dist/analyzers/universal/schema/codeAnalysis.d.ts.map +1 -1
- package/dist/analyzers/universal/schema/codeAnalysis.js +20 -2
- package/dist/analyzers/universal/schema/codeAnalysis.js.map +1 -1
- package/dist/auditRouter.d.ts.map +1 -1
- package/dist/auditRouter.js +6 -1
- package/dist/auditRouter.js.map +1 -1
- package/dist/auditRunner.d.ts.map +1 -1
- package/dist/auditRunner.js +53 -1
- package/dist/auditRunner.js.map +1 -1
- package/dist/cli.js +119 -4
- package/dist/cli.js.map +1 -1
- package/dist/config/defaults.d.ts +1 -0
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +14 -6
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/effectiveConfig.d.ts +22 -1
- package/dist/config/effectiveConfig.d.ts.map +1 -1
- package/dist/config/effectiveConfig.js +69 -2
- package/dist/config/effectiveConfig.js.map +1 -1
- package/dist/config/lintConfigReader.d.ts +56 -0
- package/dist/config/lintConfigReader.d.ts.map +1 -0
- package/dist/config/lintConfigReader.js +263 -0
- package/dist/config/lintConfigReader.js.map +1 -0
- package/dist/dataPaths.d.ts +8 -0
- package/dist/dataPaths.d.ts.map +1 -1
- package/dist/dataPaths.js +21 -0
- package/dist/dataPaths.js.map +1 -1
- package/dist/dismissals.d.ts +59 -0
- package/dist/dismissals.d.ts.map +1 -0
- package/dist/dismissals.js +128 -0
- package/dist/dismissals.js.map +1 -0
- package/dist/enforcement/gate.d.ts.map +1 -1
- package/dist/enforcement/gate.js +5 -0
- package/dist/enforcement/gate.js.map +1 -1
- package/dist/installConfig.d.ts +40 -0
- package/dist/installConfig.d.ts.map +1 -0
- package/dist/installConfig.js +84 -0
- package/dist/installConfig.js.map +1 -0
- package/dist/languages/go/analyzer +0 -0
- package/dist/languages/go/analyzer-src/solid.go +14 -6
- package/dist/mcp.js +54 -0
- package/dist/mcp.js.map +1 -1
- package/dist/reporting/csvReportGenerator.d.ts.map +1 -1
- package/dist/reporting/csvReportGenerator.js +1 -0
- package/dist/reporting/csvReportGenerator.js.map +1 -1
- package/dist/reporting/htmlReportGenerator.d.ts.map +1 -1
- package/dist/reporting/htmlReportGenerator.js +5 -0
- package/dist/reporting/htmlReportGenerator.js.map +1 -1
- package/dist/reporting/jsonReportGenerator.d.ts.map +1 -1
- package/dist/reporting/jsonReportGenerator.js +6 -0
- package/dist/reporting/jsonReportGenerator.js.map +1 -1
- package/dist/reporting/sarifReportGenerator.d.ts.map +1 -1
- package/dist/reporting/sarifReportGenerator.js +3 -0
- package/dist/reporting/sarifReportGenerator.js.map +1 -1
- package/dist/structuralSignature.d.ts +41 -0
- package/dist/structuralSignature.d.ts.map +1 -0
- package/dist/structuralSignature.js +93 -0
- package/dist/structuralSignature.js.map +1 -0
- package/dist/telemetry.d.ts +80 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +148 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/types.d.ts +34 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/skills/code-auditor/SKILL.md +24 -2
- package/server.json +2 -2
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"name": "code-auditor",
|
|
11
11
|
"source": "./plugin",
|
|
12
12
|
"description": "Diff-scoped code quality auditing on every edit. Indexes your codebase, enforces invariants, and feeds violations back to the agent so fixes happen inline.",
|
|
13
|
-
"version": "3.9.
|
|
13
|
+
"version": "3.9.9",
|
|
14
14
|
"author": {
|
|
15
15
|
"name": "Ben Hammond"
|
|
16
16
|
},
|
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,185 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to the Code Auditor MCP project.
|
|
4
4
|
|
|
5
|
+
## [3.9.9] — 2026-09-15
|
|
6
|
+
|
|
7
|
+
### Telemetry opt-in is a one-step toggle
|
|
8
|
+
|
|
9
|
+
The feedback-service opt-in required an endpoint URL, so enabling it was
|
|
10
|
+
"turn on *and* paste the URL". The client now ships a default ingest endpoint
|
|
11
|
+
(`https://code-auditor-dismissals.ben-a-hammond.workers.dev/ingest`), so the
|
|
12
|
+
`telemetry` `enable` action needs no arguments — opt-in is a one-step toggle
|
|
13
|
+
with a known destination. The endpoint remains overridable (self-hosting and
|
|
14
|
+
the `--telemetry-endpoint` flag).
|
|
15
|
+
|
|
16
|
+
### Feedback service is ingest-only
|
|
17
|
+
|
|
18
|
+
The operator-facing `/report` access layer described in 3.9.8 is withdrawn:
|
|
19
|
+
the service is write-only `/ingest`, and the data is read directly from D1 when
|
|
20
|
+
needed — no `/report`, no `REPORT_SECRET`. The access layer is not designed
|
|
21
|
+
yet; this keeps the client and service inside the ingest scope.
|
|
22
|
+
|
|
23
|
+
## [3.9.8] — 2026-09-13
|
|
24
|
+
|
|
25
|
+
### Spec 57 — Dismissals and feedback
|
|
26
|
+
|
|
27
|
+
The tool produces false positives. An agent needs a way past one, and the reason
|
|
28
|
+
it gives is the most useful signal available. A dismissal clears one finding; an
|
|
29
|
+
opt-in endpoint collects the dismissal and its reason.
|
|
30
|
+
|
|
31
|
+
**Dismissals.** `code-audit dismiss <fingerprint> --reason "…"` clears exactly
|
|
32
|
+
one finding, scoped by its fingerprint (rule + file + symbol — the same tuple the
|
|
33
|
+
baseline uses). A written reason is required; the finding clears as an *instance*,
|
|
34
|
+
never the rule everywhere (the same rule still fires elsewhere). Dismissals live
|
|
35
|
+
in a committed `.codeauditor.dismissals.json` (reviewable in a diff), are counted
|
|
36
|
+
in every report ("43 findings, 3 dismissed", never a silently reduced total), and
|
|
37
|
+
never gate. New `src/dismissals.ts` plus wiring through `auditRunner.run()`, the Go
|
|
38
|
+
polyglot branch, the gate, and all four report generators; the fingerprint is
|
|
39
|
+
surfaced in the JSON report and `changed --json` so it can be copied exactly.
|
|
40
|
+
|
|
41
|
+
**Opt-in feedback.** Dismissals can be sent to a feedback service — off by default,
|
|
42
|
+
turned on only by an explicit opt-in: the new `telemetry` MCP tool
|
|
43
|
+
(`status`/`enable`/`disable`), persisted to the user's config dir. When enabled,
|
|
44
|
+
each dismissal sends a small anonymized payload: schema version, an **anonymous
|
|
45
|
+
install ID** (a random value generated locally, never derived from the machine,
|
|
46
|
+
user, or project — it groups submissions by source without tracking anything
|
|
47
|
+
personal), tool version, rule ID, urgency, reason (verbatim), a structural AST
|
|
48
|
+
signature, and a coarse language hint. The signature is built from grammar kinds
|
|
49
|
+
only (a node's `type`, never its text), so identifiers, literals, paths, and source
|
|
50
|
+
text are structurally impossible to include. Sending is best-effort: offline or a
|
|
51
|
+
dead endpoint is silent and never blocks or fails a gate. New
|
|
52
|
+
`src/installConfig.ts`, `src/structuralSignature.ts`, `src/telemetry.ts`.
|
|
53
|
+
|
|
54
|
+
**The service.** A Cloudflare Worker + D1 in `services/` (separate repo): a flat
|
|
55
|
+
dismissals table (`install_id`, `version`, `rule_id`, `level`, `reason`,
|
|
56
|
+
`signature`, `lang`, `created_at`), write-only `/ingest` with a per-IP
|
|
57
|
+
Durable-Object rate limit (10,000/hour — a provisional ceiling a large team never
|
|
58
|
+
trips, with bot protection carrying the abuse-detection weight) and a hard size cap,
|
|
59
|
+
and an operator-gated `/report` returning most-dismissed rules + reasons grouped by
|
|
60
|
+
install ID. Deployment requires Cloudflare auth and is a flagged manual step (not
|
|
61
|
+
performed here). The payload carries a pinned `schema` version — now `2`, bumped for
|
|
62
|
+
the `install_id` field — with a pinned-shape test on each side, so a cross-repo wire
|
|
63
|
+
contract drift fails loudly instead of being silently stored.
|
|
64
|
+
|
|
65
|
+
Fix contracts: `dismissals.spec.ts` (instance-scoped positive / near-miss / guard /
|
|
66
|
+
absence), `installConfig.spec.ts` (random stable ID, opt-in default-off + round-trip),
|
|
67
|
+
`structuralSignature.spec.ts` and `telemetry.spec.ts` (the acceptance-4 boundary test
|
|
68
|
+
— a secret, a table name, and a distinctive identifier none of which enter the
|
|
69
|
+
signature or payload — plus offline safety). The service type-checks against
|
|
70
|
+
`@cloudflare/workers-types`.
|
|
71
|
+
|
|
72
|
+
## [3.9.7] — 2026-09-12
|
|
73
|
+
|
|
74
|
+
### Spec 50 — size-threshold defaults recalculated, project lint config as authority
|
|
75
|
+
|
|
76
|
+
The size-threshold rules fired on idiomatic code because their numbers were never
|
|
77
|
+
chosen deliberately — `function-length` at 50 produced 23 findings on a small
|
|
78
|
+
React project where every correctness rule was at zero. Three changes:
|
|
79
|
+
|
|
80
|
+
1. **Defaults raised to defensible numbers**, each with a written rationale
|
|
81
|
+
recorded in the rule registry (`thresholdRationale`), not just the number.
|
|
82
|
+
Headliners: `function-length` 50→200, `parameter-count` 4→6, `class-size`
|
|
83
|
+
15→20 methods / 100→150 aggregate complexity, `interface-size` 20→25,
|
|
84
|
+
`react::complexity` 10→20, and the Go size rules (`function-size` complexity
|
|
85
|
+
10→20 / params 5→6, `struct-size` 10→15, `switch-size` 5→8, `interface-size`
|
|
86
|
+
5→10). `method-complexity` (McCC 50) and `tight-coupling` (0.7) are kept, with
|
|
87
|
+
rationale recorded for why.
|
|
88
|
+
2. **Project lint config is now the authoritative threshold source.** New
|
|
89
|
+
`src/config/lintConfigReader.ts` reads the project's own ESLint config (flat
|
|
90
|
+
`eslint.config.*` or legacy `.eslintrc.*`) and maps `max-lines-per-function`,
|
|
91
|
+
`max-params`, and `complexity` onto the SOLID size thresholds; `max-depth` /
|
|
92
|
+
`max-statements` are recognized but unmapped (no equivalent), surfaced for
|
|
93
|
+
transparency. Precedence: `.codeauditor.json` > project lint config > presets >
|
|
94
|
+
defaults. Every size threshold reports its source in
|
|
95
|
+
`metadata.thresholdSources` (`project-config` / `project-lint-config` /
|
|
96
|
+
`preset:<id>` / `default`).
|
|
97
|
+
3. **Re-measured all five corpora** — every delta attributed to a default raise.
|
|
98
|
+
None of the five corpora configures a size rule in ESLint, so the lint reader
|
|
99
|
+
contributed no corpus delta (validated by the fix contract, not a corpus).
|
|
100
|
+
|
|
101
|
+
Corpus totals: recall-protocol 4,080→3,157 (−923), hhra-org 1,125→743 (−382),
|
|
102
|
+
knex 188→112 (−76), primer-css 19→16 (−3), blitz 818→721 (−97). Five survivors
|
|
103
|
+
sampled and confirmed genuine outliers: a 12-param `executePipeline`, the 675-line
|
|
104
|
+
build-editor `reducer`, knex's 191-member `QueryInterface`, hhra's 1,103-line /
|
|
105
|
+
McCC-120 `EtlPageClient`, and blitz's 1,383-line `upgradeLegacy` codemod.
|
|
106
|
+
|
|
107
|
+
Fix contract (`lintConfigReader.spec.ts`, unit + integration): positive (lint
|
|
108
|
+
`max-params` beats the default), near-miss (unrelated rules → defaults), guard
|
|
109
|
+
(`.codeauditor.json` wins over lint), absence (no config → defaults, no error).
|
|
110
|
+
|
|
111
|
+
## [3.9.6] — 2026-09-12
|
|
112
|
+
|
|
113
|
+
### Spec 56 R4 fix — `DELETE FROM` is a write, not a read
|
|
114
|
+
|
|
115
|
+
The gap documented in 3.9.5 ("Documented (not fixed)") is now fixed: the generic
|
|
116
|
+
`FROM` pattern in `sqlTablePatterns()` matched `FROM users` in `DELETE FROM users`
|
|
117
|
+
as a *read* (`select` ref), in addition to the `delete` ref from the DELETE
|
|
118
|
+
pattern. A table that is only ever deleted (never SELECTed) was therefore
|
|
119
|
+
misclassified as also-read, silently suppressing `written-never-read`. `isDeleteFrom`
|
|
120
|
+
now gates the generic `FROM` pattern so `DELETE FROM` classifies as a write only,
|
|
121
|
+
while an ordinary `SELECT … FROM` still classifies as a read, and
|
|
122
|
+
`INSERT INTO … SELECT … FROM` still classifies as both (a write of the target and
|
|
123
|
+
a read of the source). This is the same token-without-context family as
|
|
124
|
+
`SKIP LOCKED` parsed as a table and `REPLACE()` mistaken for `REPLACE INTO`.
|
|
125
|
+
|
|
126
|
+
Re-measured corpus baselines (updated in `specs/corpus-baselines.md`) — every
|
|
127
|
+
rule reading the read or write set was enumerated and attributed:
|
|
128
|
+
|
|
129
|
+
- `cross-domain::cross-domain/written-never-read` 10 → 20 (recall-protocol).
|
|
130
|
+
**+10** — eight delete-only tables and two written-and-deleted tables now fire
|
|
131
|
+
correctly (they were previously "read" via the spurious `select` ref).
|
|
132
|
+
- `schema::unknown-table` 17 → 16 (knex). **−1** — `sqlite_sequence` in
|
|
133
|
+
`DELETE FROM` no longer double-fires.
|
|
134
|
+
- `cross-domain::cross-domain/read-never-written` — unchanged everywhere (a
|
|
135
|
+
delete-only table still has a `delete` write row, so it is not "read but never
|
|
136
|
+
written"). `table-naming-convention`, `reserved-word`, `multi-table-write`, and
|
|
137
|
+
`no-validator-reachable` — unchanged (their findings are not on `DELETE FROM`
|
|
138
|
+
/ they read the write set only). hhra-org, primer-css, and blitz show zero delta.
|
|
139
|
+
|
|
140
|
+
Fix contract, pinned by unit tests in `UniversalSchemaAnalyzer.spec.ts`:
|
|
141
|
+
a table only deleted from fires `written-never-read`; a table both selected and
|
|
142
|
+
deleted does not; an ordinary `SELECT … FROM` still classifies as read.
|
|
143
|
+
|
|
144
|
+
## [3.9.5] — 2026-09-12
|
|
145
|
+
|
|
146
|
+
### Spec 56 — composite and corpus fixtures prove the rules interact
|
|
147
|
+
|
|
148
|
+
Minimal single-construct fixtures prove a rule fires on its shape, but the recent
|
|
149
|
+
bugs lived in the *interaction* between constructs. Two fixture families are
|
|
150
|
+
added, each asserted by **equality** — the *complete* finding set (presence AND
|
|
151
|
+
absence), not "contains" — and run through the full 14-analyzer set via a
|
|
152
|
+
temp-copy harness (the `/tests/` path segment would otherwise trip per-analyzer
|
|
153
|
+
`skipTestFiles`).
|
|
154
|
+
|
|
155
|
+
- **`unfiltered-query` excludes INSERT/upsert forms (R1).** A
|
|
156
|
+
`INSERT … ON CONFLICT(…) DO UPDATE` statement is keyed by its conflict target,
|
|
157
|
+
not an unfiltered mass-write, but the re-targeted writes rule was still flagging
|
|
158
|
+
it. The `isUpsertForm` gate clears the upsert while a bare `DELETE FROM` (no
|
|
159
|
+
WHERE) still fires — pinned by the crowd-answer-game corpus fixture.
|
|
160
|
+
- **Six composite fixtures (R2/R4).** data-access, class-structure, cross-file,
|
|
161
|
+
styles, schema, and wrapping-matrix each mix constructs that historically
|
|
162
|
+
interacted. Every fixture carries a declared complete finding set, asserted by
|
|
163
|
+
equality, so the *absence* of a false positive is as enforced as the presence
|
|
164
|
+
of a true one.
|
|
165
|
+
- **Two corpus-derived fixtures from the two external reports (R3/R4).** The
|
|
166
|
+
D1/Workers (Spec 52) and crowd-answer-game (Spec 55) findings are reduced to
|
|
167
|
+
minimal constructs, tagged with source report + project, and pinned to their
|
|
168
|
+
expected result: `prepare()`→`batch()` and `Promise.all` of statements are
|
|
169
|
+
construction (not N+1), an `ON CONFLICT` upsert is a keyed write, `throw new
|
|
170
|
+
AppError()` / `return new QueryBuilder(this)` are escapes (not held), a bare
|
|
171
|
+
`[normalize]` array value is a same-file reference (not orphaned), and a
|
|
172
|
+
`FOR UPDATE SKIP LOCKED` clause is not extra tables.
|
|
173
|
+
|
|
174
|
+
### Documented (not fixed) — one pre-existing gap in schema table extraction
|
|
175
|
+
|
|
176
|
+
R4's full-set run surfaced a gap left deliberately for its own spec:
|
|
177
|
+
`DELETE FROM` emits a spurious `select` reference — the generic `FROM` pattern in
|
|
178
|
+
`sqlTablePatterns()` matches `FROM users` in `DELETE FROM users` as a read, in
|
|
179
|
+
addition to the `delete` reference — so a table that is only ever deleted (never
|
|
180
|
+
SELECTed) is misclassified as also-read, suppressing `written-never-read`. It is
|
|
181
|
+
distinct from the Spec 52 R2 upsert-write fix, and is documented in
|
|
182
|
+
`corpus-fixtures.spec.ts` rather than folded into the fixtures.
|
|
183
|
+
|
|
5
184
|
## [3.9.4] — 2026-09-12
|
|
6
185
|
|
|
7
186
|
### Spec 55 follow-up — two over-firing regressions corrected
|
package/README.md
CHANGED
|
@@ -130,6 +130,24 @@ The `sql-injection-risk` rule is **disabled by default** (`off`) after recalibra
|
|
|
130
130
|
|
|
131
131
|
With `sql-injection-risk: critical` (and the rule marked `gating`), your agent's hook will block edits that introduce AST-level SQL injection patterns.
|
|
132
132
|
|
|
133
|
+
## Dismissals
|
|
134
|
+
|
|
135
|
+
Every finding is a measurement, not a verdict — but measurements are occasionally wrong. When the agent hits a **false positive** (the rule is right in general, wrong for this specific code), it can dismiss *that one instance* rather than work around it:
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
code-audit dismiss <fingerprint> --reason "generated code, not hand-written"
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
The `<fingerprint>` comes from the JSON report (every violation carries a `fingerprint` field). A **written `--reason` is required**, and the dismissal clears exactly one finding — rule + file + symbol — so the same rule still fires everywhere else. Dismissals live in a committed `.codeauditor.dismissals.json`, reviewable in a diff.
|
|
142
|
+
|
|
143
|
+
## Anonymous dismissal feedback (opt-in)
|
|
144
|
+
|
|
145
|
+
The reason an agent gives for dismissing a finding is the most useful signal for improving the rules. Code Auditor can send dismissed findings to an anonymous feedback service that collects them.
|
|
146
|
+
|
|
147
|
+
It is **off by default** and turned on only by an explicit opt-in — the `telemetry` MCP tool (`status` / `enable` / `disable`), which records the choice in your user config dir. `enable` needs no arguments: it opts in against the built-in service endpoint (overridable for self-hosting). Opting in generates an **anonymous install ID**: a random value generated locally, never derived from your machine, user, or project, used only to group submissions by source.
|
|
148
|
+
|
|
149
|
+
**What is sent** — the reason (verbatim) plus a structural AST signature (grammar kinds only, built from a node's `type` — never its text) and a coarse language hint. **What is never sent** — source code, identifiers, literals, file paths, or anything derived from your code or environment. Sending is best-effort: offline or an unreachable endpoint is silent and never blocks an edit or fails a gate.
|
|
150
|
+
|
|
133
151
|
## Style Intelligence
|
|
134
152
|
|
|
135
153
|
Code Auditor indexes every style declaration in your project — CSS, SCSS, Tailwind, inline styles, and CSS-in-JS. The styles analyzer reads global distributions and flags fragmentation that no single-file linter can see.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reactAnalyzer.d.ts","sourceRoot":"","sources":["../../src/analyzers/reactAnalyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAEL,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAIrB;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,
|
|
1
|
+
{"version":3,"file":"reactAnalyzer.d.ts","sourceRoot":"","sources":["../../src/analyzers/reactAnalyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAEL,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAIrB;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,mBA4BlC,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,mBAAmB,EAC3B,UAAU,EAAE,mBAAmB,GAC9B,cAAc,EAAE,CAkClB;AAyVD;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,GACtC,cAAc,EAAE,CA2BlB;AAkBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,mBAAmB,EAAE,GAAG,cAAc,EAAE,CAsC5F;AAyID;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,mBAAmB,EAAE,EAClC,MAAM,EAAE,mBAAmB,GAC1B,cAAc,EAAE,CA4ClB"}
|
|
@@ -16,7 +16,10 @@ export const DEFAULT_REACT_CONFIG = {
|
|
|
16
16
|
requirePropTypes: false, // TypeScript provides type safety
|
|
17
17
|
requireErrorBoundaries: true,
|
|
18
18
|
checkHooksRules: true,
|
|
19
|
-
|
|
19
|
+
// Raised 2026-09-12 (size-threshold calibration) — 10 flagged ordinary
|
|
20
|
+
// components with a few conditionals (66 findings on recall-protocol, where
|
|
21
|
+
// every correctness rule is at zero). ESLint's own `complexity` default is 20.
|
|
22
|
+
maxComponentComplexity: 20,
|
|
20
23
|
// Performance
|
|
21
24
|
checkUnnecessaryRerenders: true,
|
|
22
25
|
requireMemoization: false, // Only suggest, don't require
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reactAnalyzer.js","sourceRoot":"","sources":["../../src/analyzers/reactAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"reactAnalyzer.js","sourceRoot":"","sources":["../../src/analyzers/reactAnalyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAwB;IACvD,sBAAsB;IACtB,0BAA0B,EAAE,IAAI;IAChC,qBAAqB,EAAE,IAAI;IAC3B,oBAAoB,EAAE,IAAI;IAE1B,iBAAiB;IACjB,gBAAgB,EAAE,KAAK,EAAE,kCAAkC;IAC3D,sBAAsB,EAAE,IAAI;IAC5B,eAAe,EAAE,IAAI;IACrB,uEAAuE;IACvE,4EAA4E;IAC5E,+EAA+E;IAC/E,sBAAsB,EAAE,EAAE;IAE1B,cAAc;IACd,yBAAyB,EAAE,IAAI;IAC/B,kBAAkB,EAAE,KAAK,EAAE,8BAA8B;IAEzD,iBAAiB;IACjB,kBAAkB,EAAE,IAAI;IACxB,sBAAsB,EAAE,IAAI;IAC5B,eAAe,EAAE,IAAI;IAErB,qCAAqC;IACrC,eAAe,EAAE,IAAI;IACrB,gBAAgB,EAAE,CAAC;IACnB,mBAAmB,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC;CACxE,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,SAA4B,EAC5B,MAA2B,EAC3B,UAA+B;IAE/B,MAAM,UAAU,GAAqB,EAAE,CAAC;IAExC,UAAU,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IAEhE,8CAA8C;IAC9C,IAAI,MAAM,CAAC,eAAe,IAAI,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5E,UAAU,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,wEAAwE;IACxE,UAAU,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IAE5D,6EAA6E;IAC7E,8EAA8E;IAC9E,6EAA6E;IAC7E,2DAA2D;IAE3D,+BAA+B;IAC/B,IAAI,MAAM,CAAC,yBAAyB,EAAE,CAAC;QACrC,UAAU,CAAC,IAAI,CAAC,GAAG,sBAAsB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,iCAAiC;IACjC,IAAI,MAAM,CAAC,kBAAkB,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;QACvD,UAAU,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,kCAAkC;IAClC,IAAI,MAAM,CAAC,eAAe,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;QACpD,UAAU,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,2EAA2E;AAC3E,SAAS,wBAAwB,CAC/B,SAA4B,EAC5B,MAA2B;IAE3B,IAAI,CAAC,CAAC,SAAS,CAAC,UAAU,IAAI,SAAS,CAAC,UAAU,GAAG,MAAM,CAAC,sBAAsB,CAAC,EAAE,CAAC;QACpF,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,CAAC;YACN,IAAI,EAAE,SAAS,CAAC,QAAQ;YACxB,IAAI,EAAE,SAAS,CAAC,UAAU;YAC1B,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,cAAc,SAAS,CAAC,IAAI,0BAA0B,SAAS,CAAC,UAAU,GAAG;YACtF,aAAa,EAAE,SAAS,CAAC,IAAI;YAC7B,IAAI,EAAE,YAAY;YAClB,aAAa,EAAE,YAAY;YAC3B,OAAO,EAAE;gBACP,iBAAiB,EAAE,SAAS,CAAC,UAAU;gBACvC,aAAa,EAAE,MAAM,CAAC,sBAAsB;aAC7C;YACD,UAAU,EAAE,wEAAwE;SACrF,CAAC,CAAC;AACL,CAAC;AAED,2EAA2E;AAC3E,SAAS,oBAAoB,CAC3B,SAA4B,EAC5B,MAA2B;IAE3B,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9D,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,CAAC;YACN,IAAI,EAAE,SAAS,CAAC,QAAQ;YACxB,IAAI,EAAE,SAAS,CAAC,UAAU;YAC1B,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,cAAc,SAAS,CAAC,IAAI,oCAAoC;YACzE,aAAa,EAAE,SAAS,CAAC,IAAI;YAC7B,IAAI,EAAE,eAAe;YACrB,aAAa,EAAE,eAAe;YAC9B,UAAU,EAAE,2DAA2D;SACxE,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,SAA4B;IACnD,MAAM,UAAU,GAAqB,EAAE,CAAC;IAExC,IAAI,CAAC,SAAS,CAAC,KAAK;QAAE,OAAO,UAAU,CAAC;IAExC,+EAA+E;IAC/E,0EAA0E;IAC1E,0EAA0E;IAC1E,uEAAuE;IACvE,kDAAkD;IAClD,wCAAwC;IAExC,iDAAiD;IACjD,MAAM,kBAAkB,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CACvD,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAChD,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,kBAAkB,EAAE,CAAC;QACtC,UAAU,CAAC,IAAI,CAAC;YACd,IAAI,EAAE,SAAS,CAAC,QAAQ;YACxB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,gBAAgB,IAAI,CAAC,IAAI,2BAA2B;YAC7D,aAAa,EAAE,SAAS,CAAC,IAAI;YAC7B,IAAI,EAAE,cAAc;YACpB,aAAa,EAAE,cAAc;YAC7B,OAAO,EAAE;gBACP,QAAQ,EAAE,IAAI,CAAC,IAAI;aACpB;YACD,UAAU,EAAE,iBAAiB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG;SACvF,CAAC,CAAC;IACL,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,SAA4B;IACtD,yDAAyD;IACzD,IAAI,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oEAAoE;IACpE,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAC7B,SAA4B,EAC5B,MAA2B;IAE3B,MAAM,UAAU,GAAqB,EAAE,CAAC;IAExC,iEAAiE;IACjE,IAAI,MAAM,CAAC,kBAAkB;QACzB,SAAS,CAAC,aAAa,KAAK,YAAY;QACxC,SAAS,CAAC,UAAU,IAAI,SAAS,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;QACrD,UAAU,CAAC,IAAI,CAAC;YACd,IAAI,EAAE,SAAS,CAAC,QAAQ;YACxB,IAAI,EAAE,SAAS,CAAC,UAAU;YAC1B,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,iCAAiC,SAAS,CAAC,IAAI,0BAA0B;YAClF,aAAa,EAAE,SAAS,CAAC,IAAI;YAC7B,IAAI,EAAE,aAAa;YACnB,aAAa,EAAE,aAAa;YAC5B,OAAO,EAAE;gBACP,UAAU,EAAE,SAAS,CAAC,UAAU;gBAChC,aAAa,EAAE,SAAS,CAAC,aAAa;aACvC;YACD,UAAU,EAAE,+DAA+D;SAC5E,CAAC,CAAC;IACL,CAAC;IAED,uDAAuD;IACvD,8EAA8E;IAC9E,4EAA4E;IAC5E,2EAA2E;IAC3E,yEAAyE;IACzE,kDAAkD;IAClD,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,MAAM,IAAI,qBAAqB,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC;QACvD,UAAU,CAAC,IAAI,CAAC;YACd,IAAI,EAAE,SAAS,CAAC,QAAQ;YACxB,IAAI,EAAE,SAAS,CAAC,UAAU;YAC1B,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,cAAc,SAAS,CAAC,IAAI,2EAA2E;YAChH,aAAa,EAAE,SAAS,CAAC,IAAI;YAC7B,IAAI,EAAE,aAAa;YACnB,aAAa,EAAE,aAAa;YAC5B,UAAU,EAAE,2DAA2D;SACxE,CAAC,CAAC;IACL,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,SAA4B;IACtD,MAAM,UAAU,GAAqB,EAAE,CAAC;IAExC,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM;QAAE,OAAO,UAAU,CAAC;IAE/B,2EAA2E;IAC3E,0EAA0E;IAC1E,6EAA6E;IAC7E,6EAA6E;IAC7E,2BAA2B;IAC3B,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,UAAU,CAAC,IAAI,CAAC;YACd,IAAI,EAAE,SAAS,CAAC,QAAQ;YACxB,IAAI,EAAE,SAAS,CAAC,UAAU;YAC1B,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,cAAc,SAAS,CAAC,IAAI,iDAAiD;YACtF,aAAa,EAAE,SAAS,CAAC,IAAI;YAC7B,IAAI,EAAE,eAAe;YACrB,aAAa,EAAE,eAAe;YAC9B,UAAU,EAAE,8EAA8E;SAC3F,CAAC,CAAC;IACL,CAAC;IAED,6EAA6E;IAC7E,8EAA8E;IAC9E,iDAAiD;IACjD,MAAM,sBAAsB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAC1D,KAAK,MAAM,OAAO,IAAI,sBAAsB,EAAE,CAAC;QAC7C,IAAI,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;YACzC,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,SAAS,CAAC,QAAQ;gBACxB,IAAI,EAAE,SAAS,CAAC,UAAU;gBAC1B,QAAQ,EAAE,QAAQ;gBAClB,OAAO,EAAE,cAAc,SAAS,CAAC,IAAI,uCAAuC,OAAO,WAAW;gBAC9F,aAAa,EAAE,SAAS,CAAC,IAAI;gBAC7B,IAAI,EAAE,eAAe;gBACrB,aAAa,EAAE,eAAe;gBAC9B,UAAU,EAAE,iFAAiF;aAC9F,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,SAA4B;IACpD,MAAM,UAAU,GAAqB,EAAE,CAAC;IAExC,4EAA4E;IAC5E,sEAAsE;IACtE,yEAAyE;IACzE,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;QAClC,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;QACzD,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,UAAU,CAAC,IAAI,CAAC;YACd,IAAI,EAAE,SAAS,CAAC,QAAQ;YACxB,IAAI,EAAE,SAAS,CAAC,UAAU;YAC1B,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,cAAc,SAAS,CAAC,IAAI,uCAAuC;YAC5E,aAAa,EAAE,SAAS,CAAC,IAAI;YAC7B,IAAI,EAAE,aAAa;YACnB,aAAa,EAAE,aAAa;YAC5B,UAAU,EAAE,4DAA4D;SACzE,CAAC,CAAC;IACL,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,iFAAiF;AACjF,SAAS,eAAe,CAAC,SAA4B;IACnD,OAAO,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,OAAO,IAAI,EAAE,CAAC;AACnD,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,MAAc;IACtC,MAAM,KAAK,GAAG,UAAU,CAAC;IACzB,IAAI,KAA6B,CAAC;IAClC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC7C,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;IAC5C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAS,mBAAmB,CAAC,MAAc,EAAE,OAAe;IAC1D,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,OAAO,KAAK,EAAE,IAAI,CAAC,CAAC;IAClD,IAAI,KAA6B,CAAC;IAClC,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC9C,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1E,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;IAC3C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,SAAS,qBAAqB,CAAC,MAAc,EAAE,IAAY;IACzD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,IAAI,cAAc,EAAE,GAAG,CAAC,CAAC;IACzD,IAAI,KAA6B,CAAC;IAClC,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACzD,uEAAuE;QACvE,IAAI,yCAAyC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACxF,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAS,aAAa,CAAC,MAAc,EAAE,KAAa;IAClD,IAAI,CAAC,GAAG,KAAK,CAAC;IACd,IAAI,QAAQ,GAA2B,IAAI,CAAC;IAC5C,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QACzB,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,EAAE,KAAK,QAAQ;gBAAE,QAAQ,GAAG,IAAI,CAAC;YACrC,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QACD,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAAC,QAAQ,GAAG,EAAE,CAAC;YAAC,CAAC,EAAE,CAAC;YAAC,SAAS;QAAC,CAAC;QAC7E,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAAC,UAAU,EAAE,CAAC;YAAC,CAAC,EAAE,CAAC;YAAC,SAAS;QAAC,CAAC;QAChD,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;YAAC,CAAC,EAAE,CAAC;YAAC,SAAS;QAAC,CAAC;QAC5E,IAAI,EAAE,KAAK,GAAG,IAAI,UAAU,KAAK,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QACjD,CAAC,EAAE,CAAC;IACN,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;AACvB,CAAC;AASD,iEAAiE;AACjE,SAAS,SAAS,CAChB,GAA0B,EAC1B,SAAiB,EACjB,IAAI,GAAa,EAAE;IAEnB,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC3B,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAElC,MAAM,YAAY,GAAG,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACtD,IAAI,YAAY,EAAE,CAAC;QACjB,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YAC1D,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;IACH,CAAC;IAED,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACrC,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CACvC,aAAuC;IAEvC,MAAM,UAAU,GAAqB,EAAE,CAAC;IACxC,MAAM,GAAG,GAA0B;QACjC,aAAa;QACb,OAAO,EAAE,IAAI,GAAG,EAAU;QAC1B,cAAc,EAAE,IAAI,GAAG,EAAU;KAClC,CAAC;IAEF,kCAAkC;IAClC,KAAK,MAAM,CAAC,SAAS,CAAC,IAAI,aAAa,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACxC,IAAI,KAAK,EAAE,CAAC;YACV,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,wBAAwB;gBAC9B,QAAQ,EAAE,MAAM;gBAChB,OAAO,EAAE,iCAAiC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBAC7D,IAAI,EAAE,YAAY;gBAClB,aAAa,EAAE,YAAY;gBAC3B,UAAU,EAAE,qDAAqD;aAClE,CAAC,CAAC;YAEH,qEAAqE;YACrE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;GAIG;AACH,MAAM,6BAA6B,GAAG,IAAI,GAAG,CAAC;IAC5C,WAAW;IACX,UAAU;IACV,WAAW;IACX,UAAU;IACV,kBAAkB;IAClB,iBAAiB;IACjB,kBAAkB;IAClB,iBAAiB;CAClB,CAAC,CAAC;AAEH;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,uBAAuB,CAAC,WAAkC;IACxE,MAAM,UAAU,GAAqB,EAAE,CAAC;IAExC,4CAA4C;IAC5C,MAAM,2BAA2B,GAAG,IAAI,GAAG,EAAU,CAAC;IACtD,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;QACjC,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YAC1C,IAAI,SAAS,CAAC,gBAAgB,EAAE,CAAC;gBAC/B,2BAA2B,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;IACH,CAAC;IAED,iEAAiE;IACjE,yEAAyE;IACzE,sEAAsE;IACtE,MAAM,0BAA0B,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAC7D,6BAA6B,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAC7D,CAAC;IAEF,0DAA0D;IAC1D,IAAI,2BAA2B,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAC1E,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAErF,IAAI,eAAe,GAAG,EAAE,EAAE,CAAC,CAAC,iDAAiD;YAC3E,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,CAAC;gBACP,QAAQ,EAAE,QAAQ;gBAClB,OAAO,EAAE,8CAA8C;gBACvD,IAAI,EAAE,mBAAmB;gBACzB,aAAa,EAAE,mBAAmB;gBAClC,UAAU,EAAE,kFAAkF;aAC/F,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAkBD;;;;GAIG;AACH,SAAS,yBAAyB,CAChC,WAAkC,EAClC,MAA2B,EAC3B,QAAqB;IAErB,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,uDAAuD;QACvD,OAAO,yBAAyB,CAAC,WAAW,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;IACrE,CAAC;IAED,4EAA4E;IAC5E,0DAA0D;IAC1D,OAAO,oBAAoB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AACrD,CAAC;AAED,yFAAyF;AACzF,SAAS,yBAAyB,CAChC,WAAkC,EAClC,YAAoC;IAEpC,MAAM,UAAU,GAAG,IAAI,GAAG,EAA6B,CAAC;IAExD,KAAK,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QAClE,6DAA6D;QAC7D,IAAI,WAAW,GAAG,SAAS,CAAC;QAC5B,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;YAClE,IAAI,KAAK,EAAE,CAAC;gBAAC,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC;gBAAC,MAAM;YAAC,CAAC;QACrD,CAAC;QACD,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,2FAA2F;AAC3F,SAAS,oBAAoB,CAC3B,WAAkC,EAClC,QAAqB;IAErB,MAAM,UAAU,GAAG,IAAI,GAAG,EAA6B,CAAC;IAExD,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;QACjC,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YAC1C,IAAI,CAAC,SAAS,CAAC,UAAU;gBAAE,SAAS;YACpC,IAAI,CAAC,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAE3E,qEAAqE;YACrE,MAAM,iBAAiB,GAAG,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;gBAC1D,MAAM,SAAS,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC/B,OAAO,SAAS,KAAK,SAAS,CAAC,WAAW,EAAE,IAAI,SAAS,KAAK,SAAS,CAAC,WAAW,EAAE,CAAC;YACxF,CAAC,CAAC,CAAC;YAEH,6DAA6D;YAC7D,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzE,MAAM,OAAO,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBACrC,gEAAgE;gBAChE,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACzC,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;oBACrE,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE;wBACtB,WAAW,EAAE,SAAS,CAAC,IAAI;wBAC3B,WAAW,EAAE,MAAM,CAAC,QAAQ;qBAC7B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,SAAS,uBAAuB,CAC9B,WAAkC,EAClC,QAAqB,EACrB,UAA0C;IAE1C,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;IACjD,MAAM,iBAAiB,GAAuB,EAAE,CAAC;IAEjD,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;QACjC,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YAC1C,IAAI,CAAC,SAAS,CAAC,WAAW;gBAAE,SAAS;YAErC,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;gBAC1C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;oBAAE,SAAS;gBAE7D,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC;gBAEvC,0CAA0C;gBAC1C,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,CAAC,WAAW;oBACtC,SAAS,CAAC,QAAQ,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC;oBAC/C,SAAS;gBACX,CAAC;gBAED,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAChE,iBAAiB,CAAC,IAAI,CAAC;oBACrB,OAAO,EAAE,KAAK;oBACd,aAAa,EAAE,SAAS,CAAC,IAAI;oBAC7B,QAAQ,EAAE,SAAS,CAAC,QAAQ;oBAC5B,IAAI,EAAE,SAAS,CAAC,UAAU,IAAI,CAAC;oBAC/B,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,WAAW,EAAE,OAAO,CAAC,WAAW;iBACjC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,CAAC;AAC/C,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAC9B,WAAkC,EAClC,MAA2B;IAE3B,OAAO,cAAc,CAAC,aAAa,EAAE,GAAG,EAAE;QACxC,MAAM,UAAU,GAAqB,EAAE,CAAC;QAExC,MAAM,SAAS,GAAG,MAAM,CAAC,mBAAmB,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QACnG,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;QAEpC,0EAA0E;QAC1E,MAAM,UAAU,GAAG,yBAAyB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC5E,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,UAAU,CAAC;QAE7C,0EAA0E;QAC1E,MAAM,EAAE,cAAc,EAAE,iBAAiB,EAAE,GACzC,uBAAuB,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QAE7D,yEAAyE;QACzE,MAAM,SAAS,GAAG,MAAM,CAAC,gBAAgB,IAAI,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAW,MAAM,CAAC;QAEhC,KAAK,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACnD,IAAI,KAAK,GAAG,SAAS;gBAAE,SAAS;YAEhC,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,GAAG,CAAC,QAAQ;gBAClB,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,QAAQ;gBACR,OAAO,EAAE,UAAU,GAAG,CAAC,OAAO,6BAA6B,GAAG,CAAC,WAAW,OAAO,GAAG,CAAC,WAAW,GAAG;gBACnG,aAAa,EAAE,GAAG,CAAC,aAAa;gBAChC,IAAI,EAAE,aAAa;gBACnB,aAAa,EAAE,aAAa;gBAC5B,UAAU,EAAE,gBAAgB,GAAG,CAAC,OAAO,yBAAyB,GAAG,CAAC,WAAW,aAAa;gBAC5F,UAAU,EAAE;oBACV,MAAM,EAAE,aAAa;oBACrB,OAAO,EAAE,gBAAgB,GAAG,CAAC,OAAO,QAAQ,GAAG,CAAC,aAAa,wBAAwB,GAAG,CAAC,WAAW,gBAAgB,GAAG,CAAC,WAAW,IAAI;oBACvI,OAAO,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC;oBAC1B,KAAK,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,WAAW,CAAC;oBACtC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;iBAClB;aACF,CAAC,CAAC;QACL,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -85,6 +85,14 @@ export interface RuleRegistryEntry {
|
|
|
85
85
|
* rules with no tunable threshold.
|
|
86
86
|
*/
|
|
87
87
|
thresholds: string[];
|
|
88
|
+
/**
|
|
89
|
+
* Why the thresholds are set where they are. Required whenever a rule carries a
|
|
90
|
+
* tunable size threshold — a number must never be an unexplained magic value.
|
|
91
|
+
* For a re-calibration, record the "old → new → why" so the decision is auditable
|
|
92
|
+
* (the Spec 33 failure: 50→100 / 4→6 silently dropped 660 single-responsibility
|
|
93
|
+
* findings because the change was a side effect, not a reasoned decision).
|
|
94
|
+
*/
|
|
95
|
+
thresholdRationale?: string;
|
|
88
96
|
/**
|
|
89
97
|
* Spec 37 R3 — inline valid/invalid samples for this rule. At least one
|
|
90
98
|
* valid sample must be a near-miss (syntactically close to an invalid case
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ruleRegistry.d.ts","sourceRoot":"","sources":["../../src/analyzers/ruleRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,MAAM,WAAW,iBAAiB;IAChC,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,eAAe,GAAG,MAAM,GAAG,cAAc,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC/F;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB;;;;;;OAMG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB;;;;;OAKG;IACH,OAAO,EAAE,WAAW,CAAC;CACtB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,UAAU;IACzB,+FAA+F;IAC/F,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4FAA4F;IAC5F,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED,8DAA8D;AAC9D,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"ruleRegistry.d.ts","sourceRoot":"","sources":["../../src/analyzers/ruleRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,MAAM,WAAW,iBAAiB;IAChC,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,eAAe,GAAG,MAAM,GAAG,cAAc,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC/F;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB;;;;;;OAMG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,OAAO,EAAE,WAAW,CAAC;CACtB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,UAAU;IACzB,+FAA+F;IAC/F,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4FAA4F;IAC5F,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED,8DAA8D;AAC9D,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAi1DrE,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,MAAM,EAEnC,CAAC;AAET;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAMlD,CAAC;AAEF;;;GAGG;AACH,UAAU,aAAa;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,aAAa,GAAG,QAAQ,CAAC,iBAAiB,CAAC,GAAG,SAAS,CAQ/F"}
|
|
@@ -15,13 +15,14 @@ export const RULE_REGISTRY = {
|
|
|
15
15
|
message: 'Class "{name}" has {methods} methods, exceeding the maximum of {max}. Consider splitting into smaller classes.',
|
|
16
16
|
docs: 'solid/class-size',
|
|
17
17
|
thresholds: ['maxMethodsPerClass', 'classMethodsThreshold', 'classAggregateComplexity'],
|
|
18
|
+
thresholdRationale: 'A class is a god-object boundary, not a style nit. 20 methods / 150 aggregate cyclomatic complexity are where a class unambiguously holds too much. The old 15/100 flagged ordinary domain models and controllers (31 findings on knex).',
|
|
18
19
|
samples: {
|
|
19
20
|
valid: [
|
|
20
21
|
{ code: 'class Small {\n load() { return this.fetch(); }\n save() { return this.persist(); }\n}', nearMiss: true },
|
|
21
22
|
],
|
|
22
23
|
invalid: [
|
|
23
24
|
{
|
|
24
|
-
code: 'class Big {\n m1() {} m2() {} m3() {} m4() {} m5() {} m6() {} m7() {}
|
|
25
|
+
code: 'class Big {\n m1() {} m2() {} m3() {} m4() {} m5() {} m6() {} m7() {}\n m8() {} m9() {} m10() {} m11() {} m12() {} m13() {} m14() {}\n m15() {} m16() {} m17() {} m18() {} m19() {} m20() {} m21() {}\n}',
|
|
25
26
|
resolution: { action: 'extract-methods', summary: 'Extract the methods that touch only migration state into a separate class and delegate to it.', symbols: ['Big'] },
|
|
26
27
|
},
|
|
27
28
|
],
|
|
@@ -35,6 +36,7 @@ export const RULE_REGISTRY = {
|
|
|
35
36
|
message: 'Method "{name}" has cyclomatic complexity {complexity}, exceeding the maximum of {max}.',
|
|
36
37
|
docs: 'solid/method-complexity',
|
|
37
38
|
thresholds: ['maxMethodComplexity'],
|
|
39
|
+
thresholdRationale: 'McCC 50 is already a genuinely large function, not idiomatic code (33 findings on recall-protocol, all real outliers). Kept at 50 — the cyclomatic-complexity ceiling where a function cannot be held in working memory; no raise needed.',
|
|
38
40
|
samples: {
|
|
39
41
|
valid: [
|
|
40
42
|
{ code: 'function simple(x) {\n if (x > 0) return x;\n return -x;\n}', nearMiss: true },
|
|
@@ -91,13 +93,14 @@ export const RULE_REGISTRY = {
|
|
|
91
93
|
message: 'Function "{name}" has {lines} lines, exceeding the maximum of {max}. Consider breaking it down.',
|
|
92
94
|
docs: 'function-length',
|
|
93
95
|
thresholds: ['maxLinesPerMethod'],
|
|
96
|
+
thresholdRationale: '50 flagged any function over ~one screen; idiomatic handlers/setup/config builders run 50–150 lines (23 findings on a small React project with every correctness rule at zero). 200 is the working-memory ceiling where a function is unambiguously too long.',
|
|
94
97
|
samples: {
|
|
95
98
|
valid: [
|
|
96
99
|
{ code: 'function short(x) {\n const a = transform(x);\n const b = validate(a);\n return b;\n}', nearMiss: true },
|
|
97
100
|
],
|
|
98
101
|
invalid: [
|
|
99
102
|
{
|
|
100
|
-
code: 'function long(input) {\n let
|
|
103
|
+
code: 'function long(input) {\n let v1 = step1(input);\n let v2 = step2(v1);\n let v3 = step3(v2);\n let v4 = step4(v3);\n let v5 = step5(v4);\n let v6 = step6(v5);\n let v7 = step7(v6);\n let v8 = step8(v7);\n let v9 = step9(v8);\n let v10 = step10(v9);\n let v11 = step11(v10);\n let v12 = step12(v11);\n let v13 = step13(v12);\n let v14 = step14(v13);\n let v15 = step15(v14);\n let v16 = step16(v15);\n let v17 = step17(v16);\n let v18 = step18(v17);\n let v19 = step19(v18);\n let v20 = step20(v19);\n let v21 = step21(v20);\n let v22 = step22(v21);\n let v23 = step23(v22);\n let v24 = step24(v23);\n let v25 = step25(v24);\n let v26 = step26(v25);\n let v27 = step27(v26);\n let v28 = step28(v27);\n let v29 = step29(v28);\n let v30 = step30(v29);\n let v31 = step31(v30);\n let v32 = step32(v31);\n let v33 = step33(v32);\n let v34 = step34(v33);\n let v35 = step35(v34);\n let v36 = step36(v35);\n let v37 = step37(v36);\n let v38 = step38(v37);\n let v39 = step39(v38);\n let v40 = step40(v39);\n let v41 = step41(v40);\n let v42 = step42(v41);\n let v43 = step43(v42);\n let v44 = step44(v43);\n let v45 = step45(v44);\n let v46 = step46(v45);\n let v47 = step47(v46);\n let v48 = step48(v47);\n let v49 = step49(v48);\n let v50 = step50(v49);\n let v51 = step51(v50);\n let v52 = step52(v51);\n let v53 = step53(v52);\n let v54 = step54(v53);\n let v55 = step55(v54);\n let v56 = step56(v55);\n let v57 = step57(v56);\n let v58 = step58(v57);\n let v59 = step59(v58);\n let v60 = step60(v59);\n let v61 = step61(v60);\n let v62 = step62(v61);\n let v63 = step63(v62);\n let v64 = step64(v63);\n let v65 = step65(v64);\n let v66 = step66(v65);\n let v67 = step67(v66);\n let v68 = step68(v67);\n let v69 = step69(v68);\n let v70 = step70(v69);\n let v71 = step71(v70);\n let v72 = step72(v71);\n let v73 = step73(v72);\n let v74 = step74(v73);\n let v75 = step75(v74);\n let v76 = step76(v75);\n let v77 = step77(v76);\n let v78 = step78(v77);\n let v79 = step79(v78);\n let v80 = step80(v79);\n let v81 = step81(v80);\n let v82 = step82(v81);\n let v83 = step83(v82);\n let v84 = step84(v83);\n let v85 = step85(v84);\n let v86 = step86(v85);\n let v87 = step87(v86);\n let v88 = step88(v87);\n let v89 = step89(v88);\n let v90 = step90(v89);\n let v91 = step91(v90);\n let v92 = step92(v91);\n let v93 = step93(v92);\n let v94 = step94(v93);\n let v95 = step95(v94);\n let v96 = step96(v95);\n let v97 = step97(v96);\n let v98 = step98(v97);\n let v99 = step99(v98);\n let v100 = step100(v99);\n let v101 = step101(v100);\n let v102 = step102(v101);\n let v103 = step103(v102);\n let v104 = step104(v103);\n let v105 = step105(v104);\n let v106 = step106(v105);\n let v107 = step107(v106);\n let v108 = step108(v107);\n let v109 = step109(v108);\n let v110 = step110(v109);\n let v111 = step111(v110);\n let v112 = step112(v111);\n let v113 = step113(v112);\n let v114 = step114(v113);\n let v115 = step115(v114);\n let v116 = step116(v115);\n let v117 = step117(v116);\n let v118 = step118(v117);\n let v119 = step119(v118);\n let v120 = step120(v119);\n let v121 = step121(v120);\n let v122 = step122(v121);\n let v123 = step123(v122);\n let v124 = step124(v123);\n let v125 = step125(v124);\n let v126 = step126(v125);\n let v127 = step127(v126);\n let v128 = step128(v127);\n let v129 = step129(v128);\n let v130 = step130(v129);\n let v131 = step131(v130);\n let v132 = step132(v131);\n let v133 = step133(v132);\n let v134 = step134(v133);\n let v135 = step135(v134);\n let v136 = step136(v135);\n let v137 = step137(v136);\n let v138 = step138(v137);\n let v139 = step139(v138);\n let v140 = step140(v139);\n let v141 = step141(v140);\n let v142 = step142(v141);\n let v143 = step143(v142);\n let v144 = step144(v143);\n let v145 = step145(v144);\n let v146 = step146(v145);\n let v147 = step147(v146);\n let v148 = step148(v147);\n let v149 = step149(v148);\n let v150 = step150(v149);\n let v151 = step151(v150);\n let v152 = step152(v151);\n let v153 = step153(v152);\n let v154 = step154(v153);\n let v155 = step155(v154);\n let v156 = step156(v155);\n let v157 = step157(v156);\n let v158 = step158(v157);\n let v159 = step159(v158);\n let v160 = step160(v159);\n let v161 = step161(v160);\n let v162 = step162(v161);\n let v163 = step163(v162);\n let v164 = step164(v163);\n let v165 = step165(v164);\n let v166 = step166(v165);\n let v167 = step167(v166);\n let v168 = step168(v167);\n let v169 = step169(v168);\n let v170 = step170(v169);\n let v171 = step171(v170);\n let v172 = step172(v171);\n let v173 = step173(v172);\n let v174 = step174(v173);\n let v175 = step175(v174);\n let v176 = step176(v175);\n let v177 = step177(v176);\n let v178 = step178(v177);\n let v179 = step179(v178);\n let v180 = step180(v179);\n let v181 = step181(v180);\n let v182 = step182(v181);\n let v183 = step183(v182);\n let v184 = step184(v183);\n let v185 = step185(v184);\n let v186 = step186(v185);\n let v187 = step187(v186);\n let v188 = step188(v187);\n let v189 = step189(v188);\n let v190 = step190(v189);\n let v191 = step191(v190);\n let v192 = step192(v191);\n let v193 = step193(v192);\n let v194 = step194(v193);\n let v195 = step195(v194);\n let v196 = step196(v195);\n let v197 = step197(v196);\n let v198 = step198(v197);\n let v199 = step199(v198);\n let v200 = step200(v199);\n let v201 = step201(v200);\n let v202 = step202(v201);\n let v203 = step203(v202);\n let v204 = step204(v203);\n let v205 = step205(v204);\n return v205;\n}',
|
|
101
104
|
resolution: { action: 'break-down-function', summary: 'Break "long" into smaller functions, extracting named helper blocks for each pipeline stage.', symbols: ['long'] },
|
|
102
105
|
},
|
|
103
106
|
],
|
|
@@ -111,14 +114,15 @@ export const RULE_REGISTRY = {
|
|
|
111
114
|
message: 'Function "{name}" has {params} parameters, exceeding the maximum of {max}. Consider using an options object.',
|
|
112
115
|
docs: 'parameter-count',
|
|
113
116
|
thresholds: ['maxParametersPerMethod'],
|
|
117
|
+
thresholdRationale: '4 flagged ordinary dependency-injected constructors and config functions. 6 is where an options object is clearly warranted.',
|
|
114
118
|
samples: {
|
|
115
119
|
valid: [
|
|
116
120
|
{ code: 'function combine(a, b, c, d) {\n return a + b + c + d;\n}', nearMiss: true },
|
|
117
121
|
],
|
|
118
122
|
invalid: [
|
|
119
123
|
{
|
|
120
|
-
code: 'function combine(a, b, c, d, e) {\n return a + b + c + d + e;\n}',
|
|
121
|
-
resolution: { action: 'bundle-params', summary: 'Bundle the
|
|
124
|
+
code: 'function combine(a, b, c, d, e, f, g) {\n return a + b + c + d + e + f + g;\n}',
|
|
125
|
+
resolution: { action: 'bundle-params', summary: 'Bundle the 7 parameters of "combine" into an options object.', symbols: ['a', 'b', 'c', 'd', 'e', 'f', 'g'] },
|
|
122
126
|
},
|
|
123
127
|
],
|
|
124
128
|
},
|
|
@@ -130,13 +134,14 @@ export const RULE_REGISTRY = {
|
|
|
130
134
|
resolvable: false,
|
|
131
135
|
message: 'Interface "{name}" has many members.',
|
|
132
136
|
docs: 'interface-size',
|
|
133
|
-
thresholds: [],
|
|
137
|
+
thresholds: ['maxInterfaceMembers'],
|
|
138
|
+
thresholdRationale: '20 flagged a legitimate service/repository interface; 25 method-bearing members is where splitting into smaller, more focused interfaces is warranted.',
|
|
134
139
|
samples: {
|
|
135
140
|
valid: [
|
|
136
141
|
{ code: 'interface Printer {\n print(doc) { return doc; }\n}', nearMiss: true },
|
|
137
142
|
],
|
|
138
143
|
invalid: [
|
|
139
|
-
{ code: 'interface Machine {\n
|
|
144
|
+
{ code: 'interface Machine {\n op1() {}\n op2() {}\n op3() {}\n op4() {}\n op5() {}\n op6() {}\n op7() {}\n op8() {}\n op9() {}\n op10() {}\n op11() {}\n op12() {}\n op13() {}\n op14() {}\n op15() {}\n op16() {}\n op17() {}\n op18() {}\n op19() {}\n op20() {}\n op21() {}\n op22() {}\n op23() {}\n op24() {}\n op25() {}\n op26() {}\n}' },
|
|
140
145
|
],
|
|
141
146
|
},
|
|
142
147
|
},
|
|
@@ -154,6 +159,7 @@ export const RULE_REGISTRY = {
|
|
|
154
159
|
message: 'Switch or type switch has many case clauses.',
|
|
155
160
|
docs: 'switch-size',
|
|
156
161
|
thresholds: [],
|
|
162
|
+
thresholdRationale: 'Go analyzer: 5 flagged idiomatic dispatch switches (HTTP status / command maps). 8 cases suggests a table-driven lookup. Hardcoded in the Go analyzer (not a TS config key).',
|
|
157
163
|
samples: {
|
|
158
164
|
valid: [
|
|
159
165
|
{
|
|
@@ -162,7 +168,7 @@ export const RULE_REGISTRY = {
|
|
|
162
168
|
},
|
|
163
169
|
],
|
|
164
170
|
invalid: [
|
|
165
|
-
{ code: 'package main\n\nfunc dispatch(x int) int {\n\tswitch x {\n\tcase 1:\n\t\treturn 1\n\tcase 2:\n\t\treturn 2\n\tcase 3:\n\t\treturn 3\n\tcase 4:\n\t\treturn 4\n\tcase 5:\n\t\treturn 5\n\tcase 6:\n\t\treturn 6\n\tcase 7:\n\t\treturn 7\n\t}\n\treturn 0\n}' },
|
|
171
|
+
{ code: 'package main\n\nfunc dispatch(x int) int {\n\tswitch x {\n\tcase 1:\n\t\treturn 1\n\tcase 2:\n\t\treturn 2\n\tcase 3:\n\t\treturn 3\n\tcase 4:\n\t\treturn 4\n\tcase 5:\n\t\treturn 5\n\tcase 6:\n\t\treturn 6\n\tcase 7:\n\t\treturn 7\n\tcase 8:\n\t\treturn 8\n\tcase 9:\n\t\treturn 9\n\t}\n\treturn 0\n}' },
|
|
166
172
|
],
|
|
167
173
|
},
|
|
168
174
|
},
|
|
@@ -174,6 +180,7 @@ export const RULE_REGISTRY = {
|
|
|
174
180
|
message: 'Function has many parameters, multiple returns, and high complexity.',
|
|
175
181
|
docs: 'function-size',
|
|
176
182
|
thresholds: [],
|
|
183
|
+
thresholdRationale: 'Go analyzer: AND-combined (complexity > 20 && returns > 2 && params > 6) — a function large in every dimension. Complexity raised 10→20 and params 5→6 to align with the TS ceilings while staying conservative (all three must exceed).',
|
|
177
184
|
samples: {
|
|
178
185
|
valid: [
|
|
179
186
|
{
|
|
@@ -182,7 +189,7 @@ export const RULE_REGISTRY = {
|
|
|
182
189
|
},
|
|
183
190
|
],
|
|
184
191
|
invalid: [
|
|
185
|
-
{ code: 'package main\n\nfunc doEverything(a int, b int, c int, d int, e int, f int) (int, string, bool) {\n\tx := 0\n\tif a >
|
|
192
|
+
{ code: 'package main\n\nfunc doEverything(a int, b int, c int, d int, e int, f int, g int) (int, string, bool) {\n\tx := 0\n\tif b > 1 { x++ }\n\tif c > 2 { x++ }\n\tif d > 3 { x++ }\n\tif e > 4 { x++ }\n\tif f > 5 { x++ }\n\tif g > 6 { x++ }\n\tif a > 7 { x++ }\n\tif b > 8 { x++ }\n\tif c > 9 { x++ }\n\tif d > 10 { x++ }\n\tif e > 11 { x++ }\n\tif f > 12 { x++ }\n\tif g > 13 { x++ }\n\tif a > 14 { x++ }\n\tif b > 15 { x++ }\n\tif c > 16 { x++ }\n\tif d > 17 { x++ }\n\tif e > 18 { x++ }\n\tif f > 19 { x++ }\n\tif g > 20 { x++ }\n\treturn x, "ok", true\n}' },
|
|
186
193
|
],
|
|
187
194
|
},
|
|
188
195
|
},
|
|
@@ -194,6 +201,7 @@ export const RULE_REGISTRY = {
|
|
|
194
201
|
message: 'Struct has many fields.',
|
|
195
202
|
docs: 'struct-size',
|
|
196
203
|
thresholds: [],
|
|
204
|
+
thresholdRationale: 'Go analyzer: 10 flagged ordinary config/model structs; 15 fields is a god-struct. Hardcoded in the Go analyzer (not a TS config key).',
|
|
197
205
|
samples: {
|
|
198
206
|
valid: [
|
|
199
207
|
{
|
|
@@ -202,7 +210,7 @@ export const RULE_REGISTRY = {
|
|
|
202
210
|
},
|
|
203
211
|
],
|
|
204
212
|
invalid: [
|
|
205
|
-
{ code: 'package main\n\ntype Everything struct {\n\tField1 string\n\tField2 string\n\tField3 string\n\tField4 int\n\tField5 int\n\tField6 int\n\tField7 string\n\tField8 string\n\tField9 int\n\tField10 string\n\tField11 string\n}' },
|
|
213
|
+
{ code: 'package main\n\ntype Everything struct {\n\tField1 string\n\tField2 string\n\tField3 string\n\tField4 int\n\tField5 int\n\tField6 int\n\tField7 string\n\tField8 string\n\tField9 int\n\tField10 string\n\tField11 string\n\tField12 int\n\tField13 int\n\tField14 string\n\tField15 string\n\tField16 int\n}' },
|
|
206
214
|
],
|
|
207
215
|
},
|
|
208
216
|
},
|
|
@@ -1010,7 +1018,8 @@ export const RULE_REGISTRY = {
|
|
|
1010
1018
|
resolvable: false,
|
|
1011
1019
|
message: 'React component "{name}" has complexity {complexity}, exceeding the maximum.',
|
|
1012
1020
|
docs: 'complexity',
|
|
1013
|
-
thresholds: [],
|
|
1021
|
+
thresholds: ['maxComponentComplexity'],
|
|
1022
|
+
thresholdRationale: '10 flagged ordinary components with a few conditionals (66 findings on recall-protocol). ESLint\'s own `complexity` default is 20; a component with 20 branches is genuinely complex.',
|
|
1014
1023
|
samples: {
|
|
1015
1024
|
valid: [
|
|
1016
1025
|
{ code: 'function Simple({ x }) {\n return <div>{x}</div>;\n}', nearMiss: true },
|
|
@@ -1395,6 +1404,7 @@ export const RULE_REGISTRY = {
|
|
|
1395
1404
|
message: 'Tight coupling detected between {a} and {b}.',
|
|
1396
1405
|
docs: 'tight-coupling',
|
|
1397
1406
|
thresholds: [],
|
|
1407
|
+
thresholdRationale: 'Cohesion (internal edges / incident edges) > 0.7 — 70% of a cluster\'s edges staying internal is genuinely tight. A density ratio, not a "size" number; fires once per corpus. Kept at 0.7.',
|
|
1398
1408
|
samples: {
|
|
1399
1409
|
valid: [
|
|
1400
1410
|
{ code: 'import { one } from "./m";', nearMiss: true },
|