code-auditor-mcp 3.4.10 → 3.4.12
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 +10 -3
- package/CHANGELOG.md +141 -1
- package/dist/analyzers/documentationAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/documentationAnalyzer.js +11 -59
- package/dist/analyzers/documentationAnalyzer.js.map +1 -1
- package/dist/analyzers/invariantsAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/invariantsAnalyzer.js +10 -3
- package/dist/analyzers/invariantsAnalyzer.js.map +1 -1
- package/dist/analyzers/provenance.d.ts +10 -0
- package/dist/analyzers/provenance.d.ts.map +1 -1
- package/dist/analyzers/provenance.js +41 -11
- package/dist/analyzers/provenance.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 +28 -5
- package/dist/analyzers/ruleRegistry.js.map +1 -1
- package/dist/analyzers/universal/UniversalConventionsAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalConventionsAnalyzer.js +9 -7
- package/dist/analyzers/universal/UniversalConventionsAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts +85 -0
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js +422 -2
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts +2 -0
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.js +3 -0
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalStylesAnalyzer.js +9 -1
- package/dist/analyzers/universal/UniversalStylesAnalyzer.js.map +1 -1
- package/dist/auditRunner.d.ts.map +1 -1
- package/dist/auditRunner.js +30 -30
- package/dist/auditRunner.js.map +1 -1
- package/dist/cli.js +33 -0
- package/dist/cli.js.map +1 -1
- package/dist/conventions/conventionMiner.d.ts +5 -4
- package/dist/conventions/conventionMiner.d.ts.map +1 -1
- package/dist/conventions/conventionMiner.js +37 -17
- package/dist/conventions/conventionMiner.js.map +1 -1
- package/dist/grammars/tree-sitter-scss.wasm +0 -0
- package/dist/invariants/ruleEngine.d.ts +23 -0
- package/dist/invariants/ruleEngine.d.ts.map +1 -1
- package/dist/invariants/ruleEngine.js +11 -115
- package/dist/invariants/ruleEngine.js.map +1 -1
- package/dist/languages/tree-sitter/TreeSitterCssAdapter.d.ts +5 -5
- package/dist/languages/tree-sitter/TreeSitterCssAdapter.d.ts.map +1 -1
- package/dist/languages/tree-sitter/TreeSitterCssAdapter.js +11 -9
- package/dist/languages/tree-sitter/TreeSitterCssAdapter.js.map +1 -1
- package/dist/languages/tree-sitter/parser.d.ts.map +1 -1
- package/dist/languages/tree-sitter/parser.js +2 -0
- package/dist/languages/tree-sitter/parser.js.map +1 -1
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts +13 -0
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts.map +1 -1
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js +242 -24
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js.map +1 -1
- package/dist/mcp-tools/whitelistTools.d.ts +1 -1
- package/dist/mcp-tools-shared.d.ts.map +1 -1
- package/dist/mcp-tools-shared.js +1 -0
- package/dist/mcp-tools-shared.js.map +1 -1
- package/dist/mcpAuditJobs.d.ts.map +1 -1
- package/dist/mcpAuditJobs.js +1 -0
- package/dist/mcpAuditJobs.js.map +1 -1
- package/dist/pipeline.d.ts +22 -1
- package/dist/pipeline.d.ts.map +1 -1
- package/dist/pipeline.js +157 -14
- package/dist/pipeline.js.map +1 -1
- package/dist/pipelineAdapters.d.ts +10 -0
- package/dist/pipelineAdapters.d.ts.map +1 -1
- package/dist/pipelineAdapters.js +277 -48
- package/dist/pipelineAdapters.js.map +1 -1
- package/dist/styles/cssAstExtractor.d.ts +61 -0
- package/dist/styles/cssAstExtractor.d.ts.map +1 -0
- package/dist/styles/cssAstExtractor.js +617 -0
- package/dist/styles/cssAstExtractor.js.map +1 -0
- package/dist/styles/styleExtractor.d.ts +2 -2
- package/dist/styles/styleExtractor.d.ts.map +1 -1
- package/dist/styles/styleExtractor.js +69 -16
- package/dist/styles/styleExtractor.js.map +1 -1
- package/dist/styles/styleIndexer.d.ts.map +1 -1
- package/dist/styles/styleIndexer.js +4 -0
- package/dist/styles/styleIndexer.js.map +1 -1
- package/dist/types.d.ts +20 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +3 -2
- package/plugin/.claude-plugin/plugin.json +1 -1
|
@@ -10,11 +10,18 @@
|
|
|
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.4.
|
|
13
|
+
"version": "3.4.13",
|
|
14
14
|
"author": {
|
|
15
15
|
"name": "Ben Hammond"
|
|
16
16
|
},
|
|
17
|
-
"keywords": [
|
|
17
|
+
"keywords": [
|
|
18
|
+
"code-quality",
|
|
19
|
+
"audit",
|
|
20
|
+
"solid",
|
|
21
|
+
"linting",
|
|
22
|
+
"invariants"
|
|
23
|
+
]
|
|
18
24
|
}
|
|
19
|
-
]
|
|
25
|
+
],
|
|
26
|
+
"version": "3.4.12"
|
|
20
27
|
}
|
package/CHANGELOG.md
CHANGED
|
@@ -2,7 +2,147 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to the Code Auditor MCP project.
|
|
4
4
|
|
|
5
|
-
## [3.4.
|
|
5
|
+
## [3.4.13] — 2026-08-09
|
|
6
|
+
|
|
7
|
+
### Accuracy fix — `unknown-table` silently off when configuring `schemas`
|
|
8
|
+
|
|
9
|
+
The pipeline schema reducer (`createSchemaReducer`) built its known-tables catalog
|
|
10
|
+
from `schemaConfig.knownTables` (a flat `string[]`) only. It did not read
|
|
11
|
+
`schemaConfig.schemas` — the documented, structured `{name, tables}` shape that
|
|
12
|
+
the standalone `UniversalSchemaAnalyzer.analyze()` path uses. A user who configured
|
|
13
|
+
only `schemas` in `.codeauditor.json` got `knownTables.size === 0`, triggering the
|
|
14
|
+
fail-open gate, and `unknown-table` violations silently never fired.
|
|
15
|
+
|
|
16
|
+
**Fix**: `createSchemaReducer` now flattens `schemaConfig.schemas` into the catalog
|
|
17
|
+
the same way the standalone analyzer does, so both config shapes work in both code
|
|
18
|
+
paths.
|
|
19
|
+
|
|
20
|
+
### Fixture corpus — 7 known-answer regression guard suites
|
|
21
|
+
|
|
22
|
+
Systematic fixture corpus: small projects with known-answer inputs and exact
|
|
23
|
+
violation-count assertions. Each suite copies to a temp dir and runs cold
|
|
24
|
+
through the real CLI — no mocks between config and report.
|
|
25
|
+
|
|
26
|
+
| Suite | Directory | What it guards |
|
|
27
|
+
|-------|-----------|---------------|
|
|
28
|
+
| Invariant rules | `tests/fixtures/invariant-rules/` | All 5 rule kinds: import-ban, naming, call-constraint, module-boundary, ast-pattern |
|
|
29
|
+
| Data-access rules | `tests/fixtures/data-access-rules/` | unfiltered-query, loop-query, missing-org-filter, complex-query; pool.length non-DB receiver guard |
|
|
30
|
+
| SQL FP guards | `tests/fixtures/sql-fp-guards/` | 10 safe-pattern files (prepare-bind, escapeSql, wrapper-bind, etc.) + 1 true positive; 15 documented acknowledged FPs |
|
|
31
|
+
| Conventions | `tests/fixtures/conventions/` | export-shape majority-rule detection (named-majority vs all-named) |
|
|
32
|
+
| Cross-domain | `tests/fixtures/cross-domain/` | written-never-read on INSERT-only table, transaction-boundary on multi-table write |
|
|
33
|
+
| SQL CTE | `tests/fixtures/sql-cte/` | CTE names excluded from table references; inner tables extracted |
|
|
34
|
+
| SQL subquery | `tests/fixtures/sql-subquery-alias/` | Subquery aliases excluded; column alias near-miss guard |
|
|
35
|
+
|
|
36
|
+
### Other fixes
|
|
37
|
+
- **`dbWrapperNames` passthrough**: schema-code visitor config wasn't forwarding
|
|
38
|
+
`dbWrapperNames`, so locally-defined wrapper functions weren't recognized in
|
|
39
|
+
the pipeline path (only the standalone analyzer saw them).
|
|
40
|
+
- **Non-DB `pool` receiver guard**: `pool.length` on array variables is no longer
|
|
41
|
+
mistaken for a database pool operation.
|
|
42
|
+
- **SQL CTE / subquery-alias parser regression guards** (v3.4.8 regression): CTE
|
|
43
|
+
names and subquery aliases correctly excluded from table reference extraction.
|
|
44
|
+
Confirmed via integration tests.
|
|
45
|
+
|
|
46
|
+
### Open
|
|
47
|
+
- **15 documented `sql-injection-risk` false positives**: each mechanism named
|
|
48
|
+
in `docs/sql-injection-fp-defect.md`. The FP-guard fixture tests use
|
|
49
|
+
`toBeLessThanOrEqual(currentCount)` assertions — improvements drop the count
|
|
50
|
+
without breaking; regressions that spike it are caught.
|
|
51
|
+
|
|
52
|
+
### Adjudication release — Spec 26 findings confirmed
|
|
53
|
+
|
|
54
|
+
All Spec 26 findings adjudicated against recall-protocol cold run (119 styles,
|
|
55
|
+
116 conventions, 1256 data-access). No code changes — every finding verified
|
|
56
|
+
individually.
|
|
57
|
+
|
|
58
|
+
#### Styles (frosted-prism.css delta)
|
|
59
|
+
- 9 token-bypass REAL: `#06131c` vs `--active-ink` (token consumed in 8 selectors)
|
|
60
|
+
- 4 token-bypass RULE BUG: `#fff` vs `--health-base` (cross-file discovery without semantic scoping — `#fff` is universal color used for Discord/YouTube elements unrelated to health bars)
|
|
61
|
+
- 15 declaration-set-similarity REAL: verified every pair (5-11/11 declarations identical)
|
|
62
|
+
- 1 z-index-sprawl REAL: 10 distinct z-index values in one file
|
|
63
|
+
- Failure construct identified: one-liner `@keyframes {...{...}...}` with nested braces immediately followed by `@media {...}` — `{[^}]*}` regex matches first nested `}`, confusing brace-counting state machine
|
|
64
|
+
|
|
65
|
+
#### SQL injection (18 survivors)
|
|
66
|
+
- 2 REAL: hero-data-agent.ts:232, :241 — `opts.gameMode` (RPC user input) interpolated into `.exec()` SQL with only quote-escaping
|
|
67
|
+
- 1 RULE BUG: store.ts:422 — `table` is fixed internal literal (documented)
|
|
68
|
+
- 15 FALSE POSITIVES: all `.prepare()` calls interpolate compile-time constants (OFFICIAL_HEROES_SQL, EFFECT_FLAGS, CATALOG_SOURCES_SQL, allowlist-guarded values)
|
|
69
|
+
- Zero SQL-keyword receiver false positives (confirmed)
|
|
70
|
+
|
|
71
|
+
#### Conventions
|
|
72
|
+
- +1 export-shape: AdminModerationShell.tsx uses `export default` in 97%-named directory (AST `extractExports` correctly identified)
|
|
73
|
+
|
|
74
|
+
#### Recall-protocol tickets
|
|
75
|
+
- generation_queue: 8 unknown-table violations, table dropped in migration 0198
|
|
76
|
+
- hero-data-agent.ts: user-input interpolation into `.exec()` SQL
|
|
77
|
+
|
|
78
|
+
## [3.4.11] — 2026-08-07
|
|
79
|
+
|
|
80
|
+
### Spec 26: Consume the ASTs We Already Produce
|
|
81
|
+
|
|
82
|
+
Stage 1 parses every `.css` file into a tree-sitter AST, but all CSS analysis
|
|
83
|
+
operated via regex on raw source text. Spec 26 converts CSS extraction and
|
|
84
|
+
several TypeScript subsystems to walk the AST via adapter methods — the regex
|
|
85
|
+
only classifies tokens; the AST discovers structure.
|
|
86
|
+
|
|
87
|
+
#### Phase 2 — CSS AST extraction (`cssAstExtractor.ts`)
|
|
88
|
+
|
|
89
|
+
CSS declarations, class names, and custom-property tokens are now extracted from
|
|
90
|
+
tree-sitter-css ASTs via three pure functions: `extractDeclarationsFromCSSAst`,
|
|
91
|
+
`extractClassUsageFromCSSAst`, `extractTokensFromCSSAst`. `.scss` files stay on
|
|
92
|
+
the regex path (tree-sitter-css is not an SCSS grammar).
|
|
93
|
+
|
|
94
|
+
Five parser bugs in the retired regex path are eliminated by AST structure:
|
|
95
|
+
|
|
96
|
+
- **Bug 1** (whitespace before `@`-rules): `at_rule` nodes are always correct
|
|
97
|
+
- **Bug 2** (`@apply` in rule sets): handled via ERROR/postcss_statement/at_rule children
|
|
98
|
+
- **Bug 3** (nested `@`-rule brace): tree-sitter handles brace matching
|
|
99
|
+
- **Bug 4** (backward-scan boundary): no backward scanning — selectors from `selectors` child
|
|
100
|
+
- **Bug 5** (CSS comments as class names): comment nodes are typed, naturally excluded
|
|
101
|
+
|
|
102
|
+
The `;` stripping fix in `getPropertyAndValue()` (tree-sitter-css includes the
|
|
103
|
+
trailing semicolon in declaration node text) uncovered 53 legitimate
|
|
104
|
+
cross-mechanism violations previously hidden: 14 token-bypass + 39
|
|
105
|
+
mechanism-fragmentation. Styles total: 119 (was 66).
|
|
106
|
+
|
|
107
|
+
Also fixed: `extractClassUsageFromCSSAst` filters by parent type `class_selector`
|
|
108
|
+
to exclude pseudo-classes (`:hover`, `:focus`) and pseudo-elements.
|
|
109
|
+
|
|
110
|
+
#### Phase 1 — TypeScript subsystems
|
|
111
|
+
|
|
112
|
+
- **Invariants** (`ruleEngine.ts`): `extractImports()` and `extractExportedSymbols()`
|
|
113
|
+
regex functions deleted. `function-index` visitor now emits `imports`,
|
|
114
|
+
`dynamicImports`, and `exports` facts per file — invariants reducer consumes
|
|
115
|
+
them via `fileData` instead of re-extracting from source.
|
|
116
|
+
- **Conventions** (`conventionMiner.ts`): `detectExportForm()` now accepts
|
|
117
|
+
`ExportInfo[]` from `extractExports(ast)` instead of 6 regexes on raw source.
|
|
118
|
+
Export-shape detection found one additional legitimate violation
|
|
119
|
+
(`AdminModerationShell`) the regex path missed.
|
|
120
|
+
- **Documentation** (`documentationAnalyzer.ts`): `getJSDocText()` and
|
|
121
|
+
`getPrecedingJSDocComments()` replaced by `adapter.getDocumentation()`.
|
|
122
|
+
|
|
123
|
+
### SQL injection parameterization detection
|
|
124
|
+
|
|
125
|
+
Four new methods in `UniversalDataAccessAnalyzer.ts` detect safe parameterized
|
|
126
|
+
SQL patterns before the keyword/dynamic-part check:
|
|
127
|
+
|
|
128
|
+
- `isInPrepareBindChain`: detects `.prepare().bind()` chains including the
|
|
129
|
+
two-statement pattern (`const stmt = db.prepare(sql); stmt.bind(x).all()`)
|
|
130
|
+
- `isInExecChain`: detects safe DO `.exec()` with spread binds
|
|
131
|
+
- `isD1ConvenienceCall`: detects D1 convenience methods (`.all()`, `.first()`,
|
|
132
|
+
`.run()`) with bind parameters
|
|
133
|
+
|
|
134
|
+
18 legitimate `sql-injection-risk` violations remain (down from ~55 false
|
|
135
|
+
positives): 3 DO `.exec()` calls without detectable parameterization, 15
|
|
136
|
+
`prepare()` calls where the bind chain cannot be verified (dynamic table/column
|
|
137
|
+
names not bind-able).
|
|
138
|
+
|
|
139
|
+
### unknown-table = 8 (all generation_queue)
|
|
140
|
+
|
|
141
|
+
The DO DDL visitor correctly identifies 8 references to the `generation_queue`
|
|
142
|
+
table in `src/pages/api/admin/generation/queue.ts`. The table was dropped in
|
|
143
|
+
migration 0198 — a dead admin page referencing a removed table.
|
|
144
|
+
|
|
145
|
+
## [3.4.10] — 2026-07-31
|
|
6
146
|
|
|
7
147
|
### Accuracy fix: Phantom cross-domain lifecycle violations from over-broad DB detection defaults
|
|
8
148
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documentationAnalyzer.d.ts","sourceRoot":"","sources":["../../src/analyzers/documentationAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"documentationAnalyzer.d.ts","sourceRoot":"","sources":["../../src/analyzers/documentationAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAEL,cAAc,EACd,YAAY,EACZ,gBAAgB,EACjB,MAAM,aAAa,CAAC;AAyDrB;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,mBAAmB,EAAE,OAAO,CAAC;IAC7B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,eAAe,EAAE,OAAO,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,eAAO,MAAM,4BAA4B,EAAE,2BAW1C,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,qBAAqB,EAAE,MAAM,EAAE,CAAC;CACjC;AA2QD;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,MAAM,EAAE,EACf,MAAM,GAAE,OAAO,CAAC,2BAA2B,CAAM,EACjD,OAAO,GAAE,YAAiB,EAC1B,gBAAgB,CAAC,EAAE,gBAAgB,GAClC,OAAO,CAAC,cAAc,CAAC,CAiHzB"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* Migrated from TypeScript Compiler API to tree-sitter AST patterns.
|
|
6
6
|
*/
|
|
7
7
|
import { walkAST, isExported as adapterIsExported } from '../languages/adapterBridge.js';
|
|
8
|
+
import { LanguageRegistry } from '../languages/LanguageRegistry.js';
|
|
8
9
|
import { makeVisitorStatus, getFilesProcessed } from '../pipeline.js';
|
|
9
10
|
import { getNodePosition, findNodesOfType, getNodeName, processFiles } from './analyzerUtils.js';
|
|
10
11
|
import { isReactComponent, getComponentName } from '../utils/reactDetection.js';
|
|
@@ -15,57 +16,6 @@ import { isReactComponent, getComponentName } from '../utils/reactDetection.js';
|
|
|
15
16
|
const rawText = (node) => node.raw?.text ?? '';
|
|
16
17
|
/** Find the first child of a given type. */
|
|
17
18
|
const findChild = (node, type) => node.children?.find(c => c.type === type);
|
|
18
|
-
/**
|
|
19
|
-
* Get preceding comment nodes that are JSDoc-style (/** ... */).
|
|
20
|
-
* Looks at siblings in the raw tree-sitter parent, walking backwards from
|
|
21
|
-
* the given node until a non-comment sibling is found.
|
|
22
|
-
*/
|
|
23
|
-
function getPrecedingJSDocComments(node) {
|
|
24
|
-
const raw = node.raw;
|
|
25
|
-
if (!raw?.parent)
|
|
26
|
-
return [];
|
|
27
|
-
const parentRaw = raw.parent;
|
|
28
|
-
const parentAST = node.parent;
|
|
29
|
-
if (!parentAST?.children)
|
|
30
|
-
return [];
|
|
31
|
-
// Find our position in the parent AST children
|
|
32
|
-
const ourIndex = parentAST.children.findIndex(c => c.range[0] === node.range[0] && c.range[1] === node.range[1]);
|
|
33
|
-
if (ourIndex < 0)
|
|
34
|
-
return [];
|
|
35
|
-
// Walk backwards collecting adjacent comment nodes
|
|
36
|
-
const comments = [];
|
|
37
|
-
for (let i = ourIndex - 1; i >= 0; i--) {
|
|
38
|
-
const sibling = parentAST.children[i];
|
|
39
|
-
if (sibling.type === 'comment') {
|
|
40
|
-
const text = rawText(sibling);
|
|
41
|
-
if (text.includes('/**')) {
|
|
42
|
-
comments.unshift(sibling);
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
// Non-JSDoc comment — stop looking
|
|
46
|
-
break;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
break;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
return comments;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Extract the cleaned JSDoc comment text from preceding comment nodes.
|
|
57
|
-
* Strips leading /**, trailing */, and leading * on each line.
|
|
58
|
-
*/
|
|
59
|
-
function getJSDocText(node) {
|
|
60
|
-
const comments = getPrecedingJSDocComments(node);
|
|
61
|
-
if (comments.length === 0)
|
|
62
|
-
return null;
|
|
63
|
-
const combined = comments.map(c => rawText(c)).join('\n');
|
|
64
|
-
return combined
|
|
65
|
-
.replace(/\/\*\*|\*\/|\s*\*\s?/g, ' ')
|
|
66
|
-
.replace(/\s+/g, ' ')
|
|
67
|
-
.trim();
|
|
68
|
-
}
|
|
69
19
|
/**
|
|
70
20
|
* Parse @param tag details from JSDoc comment text.
|
|
71
21
|
* Returns array of documented parameter names.
|
|
@@ -133,12 +83,12 @@ function getFilePurpose(rootNode) {
|
|
|
133
83
|
/**
|
|
134
84
|
* Analyzes JSDoc parameter documentation for a function-like node.
|
|
135
85
|
*/
|
|
136
|
-
function analyzeParamDocumentation(node) {
|
|
86
|
+
function analyzeParamDocumentation(node, adapter) {
|
|
137
87
|
const totalParams = countParameters(node);
|
|
138
88
|
if (totalParams === 0) {
|
|
139
89
|
return { totalParams: 0, documentedParams: 0 };
|
|
140
90
|
}
|
|
141
|
-
const jsDocText =
|
|
91
|
+
const jsDocText = adapter.getDocumentation(node);
|
|
142
92
|
if (!jsDocText) {
|
|
143
93
|
return { totalParams, documentedParams: 0 };
|
|
144
94
|
}
|
|
@@ -151,8 +101,8 @@ function analyzeParamDocumentation(node) {
|
|
|
151
101
|
/**
|
|
152
102
|
* Checks if function has @returns or @return documentation in its JSDoc.
|
|
153
103
|
*/
|
|
154
|
-
function hasReturnDocumentation(node) {
|
|
155
|
-
const jsDocText =
|
|
104
|
+
function hasReturnDocumentation(node, adapter) {
|
|
105
|
+
const jsDocText = adapter.getDocumentation(node);
|
|
156
106
|
if (!jsDocText)
|
|
157
107
|
return false;
|
|
158
108
|
return /@returns?\b/i.test(jsDocText);
|
|
@@ -171,6 +121,8 @@ function hasReturnDocumentation(node) {
|
|
|
171
121
|
function analyzeFileDocumentation(ast, filePath, sourceCode, config) {
|
|
172
122
|
const violations = [];
|
|
173
123
|
const fileName = filePath;
|
|
124
|
+
// B3: Get the language adapter for this file type
|
|
125
|
+
const adapter = LanguageRegistry.getInstance().getAdapterForFile(filePath);
|
|
174
126
|
let totalFunctions = 0;
|
|
175
127
|
let documentedFunctions = 0;
|
|
176
128
|
let totalComponents = 0;
|
|
@@ -205,7 +157,7 @@ function analyzeFileDocumentation(ast, filePath, sourceCode, config) {
|
|
|
205
157
|
const nodeExported = adapterIsExported(node);
|
|
206
158
|
const shouldCheck = !config.checkExportedOnly || nodeExported;
|
|
207
159
|
if (shouldCheck) {
|
|
208
|
-
const jsDoc =
|
|
160
|
+
const jsDoc = adapter?.getDocumentation(node) ?? null;
|
|
209
161
|
const hasGoodDoc = jsDoc ? jsDoc.length >= config.minDescriptionLength : false;
|
|
210
162
|
if (hasGoodDoc) {
|
|
211
163
|
documentedFunctions++;
|
|
@@ -227,7 +179,7 @@ function analyzeFileDocumentation(ast, filePath, sourceCode, config) {
|
|
|
227
179
|
}
|
|
228
180
|
// Check parameter documentation
|
|
229
181
|
if (node.type === 'function_declaration' || node.type === 'function_expression') {
|
|
230
|
-
const paramAnalysis = analyzeParamDocumentation(node);
|
|
182
|
+
const paramAnalysis = analyzeParamDocumentation(node, adapter);
|
|
231
183
|
if (paramAnalysis.totalParams > 0) {
|
|
232
184
|
functionsWithParams++;
|
|
233
185
|
if (paramAnalysis.documentedParams === paramAnalysis.totalParams) {
|
|
@@ -258,7 +210,7 @@ function analyzeFileDocumentation(ast, filePath, sourceCode, config) {
|
|
|
258
210
|
const hasReturn = hasReturnType || hasReturnStatements;
|
|
259
211
|
if (hasReturn) {
|
|
260
212
|
functionsWithReturns++;
|
|
261
|
-
if (hasReturnDocumentation(node)) {
|
|
213
|
+
if (hasReturnDocumentation(node, adapter)) {
|
|
262
214
|
returnsDocumented++;
|
|
263
215
|
}
|
|
264
216
|
else if (config.requireReturnDocs && hasGoodDoc) {
|
|
@@ -286,7 +238,7 @@ function analyzeFileDocumentation(ast, filePath, sourceCode, config) {
|
|
|
286
238
|
const componentExported = adapterIsExported(node);
|
|
287
239
|
const shouldCheck = !config.checkExportedOnly || componentExported;
|
|
288
240
|
if (shouldCheck) {
|
|
289
|
-
const jsDoc =
|
|
241
|
+
const jsDoc = adapter?.getDocumentation(node) ?? null;
|
|
290
242
|
const hasGoodDoc = jsDoc ? jsDoc.length >= config.minDescriptionLength : false;
|
|
291
243
|
if (hasGoodDoc) {
|
|
292
244
|
documentedComponents++;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documentationAnalyzer.js","sourceRoot":"","sources":["../../src/analyzers/documentationAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"documentationAnalyzer.js","sourceRoot":"","sources":["../../src/analyzers/documentationAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invariantsAnalyzer.d.ts","sourceRoot":"","sources":["../../src/analyzers/invariantsAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAwD,MAAM,aAAa,CAAC;AAoD1G;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"invariantsAnalyzer.d.ts","sourceRoot":"","sources":["../../src/analyzers/invariantsAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAwD,MAAM,aAAa,CAAC;AAoD1G;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,gBAqF/B,CAAC"}
|
|
@@ -38,8 +38,8 @@ function loadRules(config, _projectDir) {
|
|
|
38
38
|
function toViolation(rv) {
|
|
39
39
|
return {
|
|
40
40
|
file: rv.file,
|
|
41
|
-
line: rv.line,
|
|
42
|
-
column: rv.column,
|
|
41
|
+
line: rv.line ?? 1,
|
|
42
|
+
column: rv.column ?? 1,
|
|
43
43
|
severity: rv.severity,
|
|
44
44
|
message: rv.message,
|
|
45
45
|
rule: rv.ruleId,
|
|
@@ -70,9 +70,13 @@ export const analyzeInvariants = async (files, config, options, _progressCallbac
|
|
|
70
70
|
};
|
|
71
71
|
}
|
|
72
72
|
const { rules, errors } = ruleData;
|
|
73
|
-
// If there are validation errors, return them as violations
|
|
73
|
+
// If there are validation errors, return them as violations.
|
|
74
|
+
// line: 1 anchors file-level errors (no specific line to point at).
|
|
75
|
+
// Required by validateHookContract: every violation needs file + line ≥ 1.
|
|
74
76
|
const errorViolations = errors.map(err => ({
|
|
75
77
|
file: '.codeauditor.json',
|
|
78
|
+
line: 1,
|
|
79
|
+
column: 1,
|
|
76
80
|
severity: 'critical',
|
|
77
81
|
message: err,
|
|
78
82
|
rule: 'config-error',
|
|
@@ -99,12 +103,15 @@ export const analyzeInvariants = async (files, config, options, _progressCallbac
|
|
|
99
103
|
projectDir,
|
|
100
104
|
sourceMap: config.sourceMap,
|
|
101
105
|
knownFiles: config.knownFiles,
|
|
106
|
+
fileData: config.fileData,
|
|
102
107
|
});
|
|
103
108
|
const violations = [
|
|
104
109
|
...errorViolations,
|
|
105
110
|
...result.violations.map(toViolation),
|
|
106
111
|
...result.errors.map(err => ({
|
|
107
112
|
file: '.codeauditor.json',
|
|
113
|
+
line: 1,
|
|
114
|
+
column: 1,
|
|
108
115
|
severity: 'warning',
|
|
109
116
|
message: err,
|
|
110
117
|
rule: 'engine-error',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invariantsAnalyzer.js","sourceRoot":"","sources":["../../src/analyzers/invariantsAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,UAAU,EAAoD,MAAM,6BAA6B,CAAC;AAC3G,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD;;;GAGG;AACH,SAAS,SAAS,CAAC,MAAW,EAAE,WAAoB;IAClD,yEAAyE;IACzE,0EAA0E;IAC1E,iDAAiD;IACjD,MAAM,WAAW,GAAG,MAAM,EAAE,KAAK,IAAI,MAAM,EAAE,cAAc,CAAC;IAE5D,IAAI,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW;IACX,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IACrE,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO;YACL,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;SAC7E,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,WAA8B,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AAC/D,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,EAAiB;IACpC,OAAO;QACL,IAAI,EAAE,EAAE,CAAC,IAAI;QACb,IAAI,EAAE,EAAE,CAAC,IAAI;
|
|
1
|
+
{"version":3,"file":"invariantsAnalyzer.js","sourceRoot":"","sources":["../../src/analyzers/invariantsAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -90,6 +90,16 @@ export interface BuildProvenanceContextOptions {
|
|
|
90
90
|
dbReceiverNames?: string[];
|
|
91
91
|
dbBindingNames?: string[];
|
|
92
92
|
dbCallMethods?: string[];
|
|
93
|
+
/**
|
|
94
|
+
* Known DB wrapper function names — e.g. d1Query, d1Exec.
|
|
95
|
+
* These are project-specific functions that wrap D1/DB API calls
|
|
96
|
+
* (e.g. function d1Query(sql) { return d1.prepare(sql).all(); }).
|
|
97
|
+
* When imported from a local module (not a known DB package), provenance
|
|
98
|
+
* can't trace through the import chain. These names provide a hybrid-mode
|
|
99
|
+
* fallback: any call to an identifier matching this list is treated as
|
|
100
|
+
* DB-provenanced.
|
|
101
|
+
*/
|
|
102
|
+
dbWrapperNames?: string[];
|
|
93
103
|
/** Validator package list override (defaults to VALIDATOR_PACKAGES) */
|
|
94
104
|
validatorPackageList?: string[];
|
|
95
105
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provenance.d.ts","sourceRoot":"","sources":["../../src/analyzers/provenance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAM3E,oCAAoC;AACpC,eAAO,MAAM,WAAW,EAAE,WAAW,CAAC,MAAM,CAiB1C,CAAC;AAEH,qCAAqC;AACrC,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAUjD,CAAC;AAEH,2DAA2D;AAC3D,eAAO,MAAM,QAAQ,EAAE,WAAW,CAAC,MAAM,CAWvC,CAAC;AAEH,mEAAmE;AACnE,eAAO,MAAM,eAAe,EAAE,WAAW,CAAC,MAAM,CAY9C,CAAC;AAEH,+EAA+E;AAC/E,eAAO,MAAM,WAAW,EAAE,WAAW,CAAC,MAAM,CA4B1C,CAAC;AAMH,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,aAAa,GAAG,UAAU,CAAC;AAE3F,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,gBAAgB,CAAC;IACzB,6EAA6E;IAC7E,MAAM,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,YAAY,GAAG,OAAO,CAAC;AAE9D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,yDAAyD;IACzD,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC/C,gEAAgE;IAChE,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACtD,4BAA4B;IAC5B,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACzD;AAwBD;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,eAAe,GACvB,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CA6BjC;AAED;;;GAGG;AACH,wBAAgB,kCAAkC,CAChD,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,eAAe,GACvB,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CA4BjC;AAMD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,eAAe,EACxB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,GACvC,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAgJjC;
|
|
1
|
+
{"version":3,"file":"provenance.d.ts","sourceRoot":"","sources":["../../src/analyzers/provenance.ts"],"names":[],"mappings":"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"}
|
|
@@ -510,8 +510,10 @@ function getMemberExpressionReceiver(node, adapter, sourceCode) {
|
|
|
510
510
|
firstChild.type !== 'property_identifier' && firstChild.type !== 'field_identifier') {
|
|
511
511
|
if (firstChild.type === 'member_expression' ||
|
|
512
512
|
firstChild.type === 'selector_expression') {
|
|
513
|
-
|
|
514
|
-
|
|
513
|
+
// Compound receiver: env.DB.prepare → receiver is "env.DB", not "env".
|
|
514
|
+
// Return the full text of the inner member expression so fallback
|
|
515
|
+
// entries like dbBindingNames: ['env.DB'] match the provenance check.
|
|
516
|
+
return adapter.getNodeText(firstChild, sourceCode);
|
|
515
517
|
}
|
|
516
518
|
if (firstChild.type === 'identifier') {
|
|
517
519
|
return adapter.getNodeText(firstChild, sourceCode);
|
|
@@ -608,11 +610,11 @@ export function buildProvenanceContext(ast, adapter, sourceCode, options) {
|
|
|
608
610
|
// 3. Fallback: in hybrid mode, add identifiers that match name lists
|
|
609
611
|
// but weren't caught by provenance (R3)
|
|
610
612
|
if (mode === 'hybrid') {
|
|
611
|
-
dbProvenanced = addNameListFallbacks(dbProvenanced, sourceCode, options.dbReceiverNames ?? [], options.dbBindingNames ?? []);
|
|
613
|
+
dbProvenanced = addNameListFallbacks(dbProvenanced, sourceCode, options.dbReceiverNames ?? [], options.dbBindingNames ?? [], options.dbWrapperNames ?? []);
|
|
612
614
|
}
|
|
613
615
|
// 4. In names mode, use ONLY name lists
|
|
614
616
|
if (mode === 'names') {
|
|
615
|
-
dbProvenanced = buildNamesOnlyProvenance(sourceCode, options.dbReceiverNames ?? [], options.dbBindingNames ?? []);
|
|
617
|
+
dbProvenanced = buildNamesOnlyProvenance(sourceCode, options.dbReceiverNames ?? [], options.dbBindingNames ?? [], options.dbWrapperNames ?? []);
|
|
616
618
|
}
|
|
617
619
|
return {
|
|
618
620
|
dbProvenanced,
|
|
@@ -627,7 +629,7 @@ export function buildProvenanceContext(ast, adapter, sourceCode, options) {
|
|
|
627
629
|
* These entries carry `reason: 'fallback'` — visible in config detection
|
|
628
630
|
* so users can audit and tighten their chains.
|
|
629
631
|
*/
|
|
630
|
-
function addNameListFallbacks(provenanceMap, sourceCode, dbReceiverNames, dbBindingNames) {
|
|
632
|
+
function addNameListFallbacks(provenanceMap, sourceCode, dbReceiverNames, dbBindingNames, dbWrapperNames) {
|
|
631
633
|
const result = new Map(provenanceMap);
|
|
632
634
|
// Scan for DB receiver names used as identifiers
|
|
633
635
|
for (const name of dbReceiverNames) {
|
|
@@ -668,13 +670,26 @@ function addNameListFallbacks(provenanceMap, sourceCode, dbReceiverNames, dbBind
|
|
|
668
670
|
}
|
|
669
671
|
}
|
|
670
672
|
}
|
|
673
|
+
// Scan for DB wrapper function names (e.g. d1Query, d1Exec)
|
|
674
|
+
for (const name of dbWrapperNames) {
|
|
675
|
+
if (result.has(name))
|
|
676
|
+
continue;
|
|
677
|
+
if (identifierAppearsInSource(sourceCode, name)) {
|
|
678
|
+
result.set(name, {
|
|
679
|
+
identifier: name,
|
|
680
|
+
reason: 'fallback',
|
|
681
|
+
source: `name list match: dbWrapperNames contains "${name}"`,
|
|
682
|
+
chain: [],
|
|
683
|
+
});
|
|
684
|
+
}
|
|
685
|
+
}
|
|
671
686
|
return result;
|
|
672
687
|
}
|
|
673
688
|
/**
|
|
674
689
|
* Build a provenance map using ONLY name lists (for names mode).
|
|
675
690
|
*/
|
|
676
|
-
function buildNamesOnlyProvenance(sourceCode, dbReceiverNames, dbBindingNames) {
|
|
677
|
-
return addNameListFallbacks(new Map(), sourceCode, dbReceiverNames, dbBindingNames);
|
|
691
|
+
function buildNamesOnlyProvenance(sourceCode, dbReceiverNames, dbBindingNames, dbWrapperNames) {
|
|
692
|
+
return addNameListFallbacks(new Map(), sourceCode, dbReceiverNames, dbBindingNames, dbWrapperNames);
|
|
678
693
|
}
|
|
679
694
|
/** Check if an identifier name appears as a standalone identifier in source. */
|
|
680
695
|
function identifierAppearsInSource(sourceCode, name) {
|
|
@@ -750,8 +765,11 @@ function isMemberExpressionDBProvenanced(node, adapter, sourceCode, context, met
|
|
|
750
765
|
break;
|
|
751
766
|
}
|
|
752
767
|
if (firstChild.type === 'member_expression' || firstChild.type === 'selector_expression') {
|
|
753
|
-
|
|
754
|
-
|
|
768
|
+
// Compound receiver: env.DB.prepare → root is "env.DB", not "env".
|
|
769
|
+
// Returning the full text of the inner member expression ensures
|
|
770
|
+
// fallback entries match (e.g. dbBindingNames: ['env.DB']).
|
|
771
|
+
rootReceiver = adapter.getNodeText(firstChild, sourceCode);
|
|
772
|
+
break;
|
|
755
773
|
}
|
|
756
774
|
// this.db.prepare → root is a chain on `this`, check `this.xxx`
|
|
757
775
|
if (firstChild.type === 'this' || firstChild.type === 'super') {
|
|
@@ -766,8 +784,20 @@ function isMemberExpressionDBProvenanced(node, adapter, sourceCode, context, met
|
|
|
766
784
|
if (context.mode === 'names') {
|
|
767
785
|
return isDBMethodCall(node, adapter, sourceCode, context, methods);
|
|
768
786
|
}
|
|
769
|
-
// Check if the root receiver is DB-provenanced
|
|
770
|
-
|
|
787
|
+
// Check if the root receiver is DB-provenanced.
|
|
788
|
+
// Compound receivers (e.g. "db.users" or "env.DB") need to match both
|
|
789
|
+
// the full text (for bindings like "env.DB") and each sub-identifier
|
|
790
|
+
// (for receivers like "db.users" where "db" is in dbReceiverNames).
|
|
791
|
+
const matchesProvenance = (r) => {
|
|
792
|
+
if (context.dbProvenanced.has(r))
|
|
793
|
+
return true;
|
|
794
|
+
for (const part of r.split('.')) {
|
|
795
|
+
if (context.dbProvenanced.has(part))
|
|
796
|
+
return true;
|
|
797
|
+
}
|
|
798
|
+
return false;
|
|
799
|
+
};
|
|
800
|
+
if (!matchesProvenance(rootReceiver)) {
|
|
771
801
|
if (rootReceiver !== 'this')
|
|
772
802
|
return false;
|
|
773
803
|
// For `this.xxx`, check if the method chain itself suggests DB usage
|