code-auditor-mcp 3.4.2 → 3.4.3
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 +67 -0
- package/dist/analyzers/crossDomain/CrossDomainAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/crossDomain/CrossDomainAnalyzer.js +67 -34
- package/dist/analyzers/crossDomain/CrossDomainAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts +9 -14
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js +41 -56
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.js +6 -0
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts +6 -0
- package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalStylesAnalyzer.js +44 -24
- package/dist/analyzers/universal/UniversalStylesAnalyzer.js.map +1 -1
- package/dist/auditRunner.d.ts +4 -0
- package/dist/auditRunner.d.ts.map +1 -1
- package/dist/auditRunner.js +19 -8
- package/dist/auditRunner.js.map +1 -1
- package/dist/config/defaults.d.ts +0 -18
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +1 -19
- package/dist/config/defaults.js.map +1 -1
- package/dist/conventions/conventionMiner.d.ts +12 -0
- package/dist/conventions/conventionMiner.d.ts.map +1 -1
- package/dist/conventions/conventionMiner.js +13 -1
- package/dist/conventions/conventionMiner.js.map +1 -1
- package/dist/reporting/jsonReportGenerator.d.ts.map +1 -1
- package/dist/reporting/jsonReportGenerator.js +5 -0
- package/dist/reporting/jsonReportGenerator.js.map +1 -1
- package/dist/styles/styleExtractor.js +6 -3
- package/dist/styles/styleExtractor.js.map +1 -1
- package/dist/styles/tailwindProbe.d.ts +101 -0
- package/dist/styles/tailwindProbe.d.ts.map +1 -0
- package/dist/styles/tailwindProbe.js +637 -0
- package/dist/styles/tailwindProbe.js.map +1 -0
- package/dist/styles/tailwindUtilityExpander.d.ts +77 -53
- package/dist/styles/tailwindUtilityExpander.d.ts.map +1 -1
- package/dist/styles/tailwindUtilityExpander.js +146 -764
- package/dist/styles/tailwindUtilityExpander.js.map +1 -1
- package/dist/types.d.ts +5 -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
|
@@ -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.4.
|
|
13
|
+
"version": "3.4.3",
|
|
14
14
|
"author": {
|
|
15
15
|
"name": "Ben Hammond"
|
|
16
16
|
},
|
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,73 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to the Code Auditor MCP project.
|
|
4
4
|
|
|
5
|
+
## [3.4.3] — 2026-07-26
|
|
6
|
+
|
|
7
|
+
### R12: Tailwind Compile-Probe Migration — Zero Hand-Curated Dictionaries
|
|
8
|
+
|
|
9
|
+
Replaced the ~4,000-entry hand-curated Tailwind class-name dictionary with a compile-probe oracle (`tailwindProbe.ts`) that validates classes against the audited project's own installed `tailwindcss` package. The project's compiler IS the authority on what classes exist — no maintained replica.
|
|
10
|
+
|
|
11
|
+
**Rationale**: The external-authority-as-oracle law (see GROUND-TRUTH.md) holds that when an external system defines what's valid, that system is the oracle — not our maintained replica of it. Hand-curating a Tailwind class dictionary is a losing game: the dictionary drifts from the actual Tailwind version, misses plugin classes, and requires maintenance on every Tailwind release.
|
|
12
|
+
|
|
13
|
+
#### Architecture
|
|
14
|
+
|
|
15
|
+
- **Primary (v4)**: Uses `compile()` with `@apply` probe stylesheets to validate classes
|
|
16
|
+
- **Fallback (v3)**: Uses `resolveConfig()` + theme generation
|
|
17
|
+
- **Structural parsing**: Arbitrary values (`prefix-[...]`), variant prefixes (`hover:`, `md:`, etc.), opacity modifiers (`utility/N`), and negative utilities (`-utility`) are parsed via regex patterns — never enumerated
|
|
18
|
+
- **Fail-open rule**: If the probe can't initialize (no tailwindcss found), `configFailed` is true and the `styles/undefined-class` detector emits a visible warning and returns early
|
|
19
|
+
|
|
20
|
+
#### New Module
|
|
21
|
+
|
|
22
|
+
- **`src/styles/tailwindProbe.ts`**: Compile-probe module. Dynamically loads the audited project's `tailwindcss`, validates class-name batches via `@apply` probe stylesheets (v4) or config theme generation (v3). Gracefully handles missing tailwindcss with `configFailed` flag.
|
|
23
|
+
|
|
24
|
+
#### Refactored Modules
|
|
25
|
+
|
|
26
|
+
- **`src/styles/tailwindUtilityExpander.ts`**: Removed all hand-curated class-name dictionaries (~800 lines deleted). `init()` only creates a probe when both `useProjectConfig === true` AND `projectRoot` is truthy. `resolve()` pipeline: probe cache → customClasses → opacity modifier → arbitrary-value → negative utility → variant prefix strip + retry.
|
|
27
|
+
- **`src/analyzers/universal/UniversalStylesAnalyzer.ts`**: `detectUndefinedClasses` now calls `await expander.init()` before resolution. When `configFailed`: emits `styles/undefined-class-disabled` warning and returns early. When probeReady: batch-probes unknown classes, then resolves each from cache. Added `tailwindClasses` config field for test-environment seeding.
|
|
28
|
+
- **`src/types.ts`**: Added `tailwindClasses?: string[]` to `StylesAnalyzerConfig` for test-environment seeding.
|
|
29
|
+
|
|
30
|
+
### Changed Files
|
|
31
|
+
|
|
32
|
+
| File | Change |
|
|
33
|
+
|------|--------|
|
|
34
|
+
| `src/styles/tailwindProbe.ts` | **New** — compile-probe module (v4 compile + v3 resolveConfig fallback) |
|
|
35
|
+
| `src/styles/tailwindUtilityExpander.ts` | Removed all hand-curated dictionaries; structural-only + probe validation |
|
|
36
|
+
| `src/analyzers/universal/UniversalStylesAnalyzer.ts` | Async init + batch-probe in detectUndefinedClasses |
|
|
37
|
+
| `src/analyzers/universal/UniversalStylesAnalyzer.spec.ts` | KNOWN_TAILWIND fixture (2 test classes); resetTailwindExpander in afterAll |
|
|
38
|
+
| `src/types.ts` | `tailwindClasses?: string[]` on StylesAnalyzerConfig |
|
|
39
|
+
|
|
40
|
+
### R13: Default-Analyzer Ghost Fix — Schema, Documentation, Component
|
|
41
|
+
|
|
42
|
+
**Discovery**: Git archaeology (`git log -p -G enabledAnalyzers`) revealed that `defaults.ts` has never included `schema` in `enabledAnalyzers` on the main branch — not since the schema analyzer was registered in 3.0.0. The July diagnostic's 6,770 schema findings ran through a non-default path (CLI override or bench harness). Default-config users never had the schema analyzer.
|
|
43
|
+
|
|
44
|
+
**Two ghost names** also sat in the defaults list since initial commit `02f3fe8`:
|
|
45
|
+
- `security` — never existed as a registered analyzer. The category tag on `data-access` is `category: 'security'`, not a standalone analyzer.
|
|
46
|
+
- `component` — renamed to `react` at some point; the registry key is `react`, and `component` never matched.
|
|
47
|
+
|
|
48
|
+
**Two more absentees** found during cross-reference:
|
|
49
|
+
- `react` — registered since inception, never in the defaults list (users who wanted React analysis had to explicitly enable it)
|
|
50
|
+
- `documentation` — same class of bug as `schema`: registered but never enabled by default
|
|
51
|
+
|
|
52
|
+
**Fix**: Corrected the defaults list to match the registry's non-experimental set:
|
|
53
|
+
- `security` → removed (ghost), `component` → `react` (actual key)
|
|
54
|
+
- `documentation` and `react` added to defaults (same bug class as `schema`)
|
|
55
|
+
|
|
56
|
+
**Guard test** (`src/__tests__/defaultsRegistry.test.ts`): Import-time test asserting:
|
|
57
|
+
1. No ghost analyzer names in defaults (present in defaults, missing from registry)
|
|
58
|
+
2. No duplicate entries
|
|
59
|
+
3. Every non-conditional registry key present in defaults (`invariants` is conditional — Spec 05 R3.1)
|
|
60
|
+
4. Canonical order matches
|
|
61
|
+
|
|
62
|
+
This is a **behavior change for every user**: `schema` and `documentation` are now enabled by default for the first time. Expect new suggestion-tier findings (`unknown-table`, `missing-function-docs`, etc.) that were always meant to ship but never did.
|
|
63
|
+
|
|
64
|
+
#### Changed Files
|
|
65
|
+
|
|
66
|
+
| File | Change |
|
|
67
|
+
|------|--------|
|
|
68
|
+
| `src/config/defaults.ts` | Corrected enabledAnalyzers: security→removed, component→react, +documentation |
|
|
69
|
+
| `src/auditRunner.ts` | Export DEFAULT_ANALYZERS for the guard test |
|
|
70
|
+
| `src/__tests__/defaultsRegistry.test.ts` | **New** — guard: defaults ≡ registry (no ghosts, no absentees) |
|
|
71
|
+
|
|
5
72
|
## [3.4.1] — 2026-07-24
|
|
6
73
|
|
|
7
74
|
### Patch Release — Production Bug Fixes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CrossDomainAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/analyzers/crossDomain/CrossDomainAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAoD,MAAM,gBAAgB,CAAC;AACvG,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"CrossDomainAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/analyzers/crossDomain/CrossDomainAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAoD,MAAM,gBAAgB,CAAC;AACvG,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AA0BzE,qBAAa,mBAAoB,SAAQ,iBAAiB;IACxD,QAAQ,CAAC,IAAI,kBAAkB;IAC/B,QAAQ,CAAC,WAAW,sFACiE;IACrF,QAAQ,CAAC,QAAQ,kBAAkB;IAEnC;;;;OAIG;IACG,OAAO,CACX,KAAK,EAAE,MAAM,EAAE,EACf,MAAM,GAAE,GAAQ,EAChB,OAAO,GAAE,GAAQ,GAChB,OAAO,CAAC,cAAc,CAAC,CA0EzB;IAED,yCAAyC;IACnC,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAEjC;IAID;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IA0C9B;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;IAyC9B;;;;;;;OAOG;IACH,OAAO,CAAC,6BAA6B;IAuJrC;;;;;;;;;OASG;IACH,OAAO,CAAC,sBAAsB;IAwL9B;;;;;;;;OAQG;IACH,OAAO,CAAC,mBAAmB;IAwL3B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;CA2C5B"}
|
|
@@ -66,8 +66,9 @@ export class CrossDomainAnalyzer extends UniversalAnalyzer {
|
|
|
66
66
|
// is shared across tests, so schema_usage entries from previous test
|
|
67
67
|
// cases leak into subsequent queries. Filter to the current project root.
|
|
68
68
|
const projectRoot = config.projectRoot;
|
|
69
|
-
const
|
|
70
|
-
|
|
69
|
+
const resolvedRoot = projectRoot ? path.resolve(projectRoot) : undefined;
|
|
70
|
+
const filePathClause = resolvedRoot
|
|
71
|
+
? { prefix: resolvedRoot, clause: 'AND file_path LIKE ?', param: `${resolvedRoot}%` }
|
|
71
72
|
: undefined;
|
|
72
73
|
// R1 — Schema lifecycle detectors
|
|
73
74
|
const lifecycle = config.schemaLifecycle ?? {};
|
|
@@ -194,20 +195,20 @@ export class CrossDomainAnalyzer extends UniversalAnalyzer {
|
|
|
194
195
|
*/
|
|
195
196
|
detectTransactionBoundaryRisk(rawDb, txnTableMax, filePath) {
|
|
196
197
|
const violations = [];
|
|
197
|
-
const
|
|
198
|
-
const
|
|
199
|
-
//
|
|
200
|
-
//
|
|
198
|
+
const fpWhere = filePath ? filePath.clause : '';
|
|
199
|
+
const fpParams = filePath ? [filePath.param] : [];
|
|
200
|
+
// ── 1. Group writes by (function_name, file_path) — no JOIN on functions.
|
|
201
|
+
// The functions table is only populated during deepSync (code-audit index
|
|
202
|
+
// sync), not during normal audit. We query schema_usage directly so this
|
|
203
|
+
// detector works in both modes.
|
|
201
204
|
const writerRows = rawDb
|
|
202
|
-
.prepare(`SELECT
|
|
203
|
-
f.id as function_id
|
|
205
|
+
.prepare(`SELECT su.function_name, su.file_path, su.table_name, MIN(su.line) as line
|
|
204
206
|
FROM schema_usage su
|
|
205
|
-
JOIN functions f ON f.name = su.function_name
|
|
206
|
-
AND f.file_path = su.file_path
|
|
207
207
|
WHERE su.usage_type IN ('insert', 'update', 'delete', 'create')
|
|
208
|
-
${
|
|
208
|
+
${fpWhere}
|
|
209
|
+
GROUP BY su.function_name, su.file_path, su.table_name
|
|
209
210
|
ORDER BY su.function_name, su.file_path`)
|
|
210
|
-
.all(...
|
|
211
|
+
.all(...fpParams);
|
|
211
212
|
if (writerRows.length === 0)
|
|
212
213
|
return violations;
|
|
213
214
|
const funcWrites = new Map();
|
|
@@ -221,34 +222,66 @@ export class CrossDomainAnalyzer extends UniversalAnalyzer {
|
|
|
221
222
|
funcWrites.set(key, {
|
|
222
223
|
filePath: row.file_path,
|
|
223
224
|
line: row.line,
|
|
224
|
-
functionId: row.function_id,
|
|
225
225
|
tables: new Set([row.table_name]),
|
|
226
226
|
});
|
|
227
227
|
}
|
|
228
228
|
}
|
|
229
|
-
//
|
|
230
|
-
//
|
|
229
|
+
// ── 2. Attempt callee expansion via graph_cache when the infrastructure
|
|
230
|
+
// is populated (requires code-audit index sync). When the functions or
|
|
231
|
+
// graph_cache tables are empty/missing, we fall back to reporting on
|
|
232
|
+
// direct writes only — the basic signal is still useful without the
|
|
233
|
+
// call-graph context.
|
|
234
|
+
const hasGraphData = (() => {
|
|
235
|
+
try {
|
|
236
|
+
const cnt = rawDb.prepare("SELECT COUNT(*) AS n FROM graph_cache WHERE graph_type = 'call'").get();
|
|
237
|
+
return (cnt?.n ?? 0) > 0;
|
|
238
|
+
}
|
|
239
|
+
catch {
|
|
240
|
+
return false;
|
|
241
|
+
}
|
|
242
|
+
})();
|
|
243
|
+
// Build a lookup of function IDs from the functions table (only if it
|
|
244
|
+
// has data — i.e., deepSync has been run).
|
|
245
|
+
let fnIdLookup = null;
|
|
246
|
+
if (hasGraphData) {
|
|
247
|
+
try {
|
|
248
|
+
const fnRows = rawDb.prepare('SELECT id, name, file_path FROM functions').all();
|
|
249
|
+
if (fnRows.length > 0) {
|
|
250
|
+
fnIdLookup = new Map();
|
|
251
|
+
for (const r of fnRows) {
|
|
252
|
+
fnIdLookup.set(`${r.file_path}::${r.name}`, r.id);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
catch {
|
|
257
|
+
// functions table might not exist or be unpopulated
|
|
258
|
+
}
|
|
259
|
+
}
|
|
231
260
|
for (const [key, funcData] of funcWrites) {
|
|
232
261
|
const allTables = new Set(funcData.tables);
|
|
233
|
-
// Depth-1
|
|
234
|
-
//
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
262
|
+
// Depth-1 callee expansion: only when graph_cache and functions tables
|
|
263
|
+
// are both populated. Without deepSync, this is skipped gracefully.
|
|
264
|
+
if (fnIdLookup && hasGraphData) {
|
|
265
|
+
const funcId = fnIdLookup.get(key);
|
|
266
|
+
if (funcId !== undefined) {
|
|
267
|
+
const calleeRows = rawDb
|
|
268
|
+
.prepare(`SELECT neighbor_key FROM graph_cache
|
|
269
|
+
WHERE graph_type = 'call' AND node_key = ?`)
|
|
270
|
+
.all(String(funcId));
|
|
271
|
+
for (const callee of calleeRows) {
|
|
272
|
+
const calleeFuncs = rawDb
|
|
273
|
+
.prepare(`SELECT name, file_path FROM functions WHERE id = ?`)
|
|
274
|
+
.all(parseInt(callee.neighbor_key, 10));
|
|
275
|
+
for (const cf of calleeFuncs) {
|
|
276
|
+
const calleeTables = rawDb
|
|
277
|
+
.prepare(`SELECT DISTINCT table_name FROM schema_usage
|
|
278
|
+
WHERE usage_type IN ('insert', 'update', 'delete', 'create')
|
|
279
|
+
AND function_name = ? AND file_path = ?`)
|
|
280
|
+
.all(cf.name, cf.file_path);
|
|
281
|
+
for (const ct of calleeTables) {
|
|
282
|
+
allTables.add(ct.table_name);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
252
285
|
}
|
|
253
286
|
}
|
|
254
287
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CrossDomainAnalyzer.js","sourceRoot":"","sources":["../../../src/analyzers/crossDomain/CrossDomainAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CrossDomainAnalyzer.js","sourceRoot":"","sources":["../../../src/analyzers/crossDomain/CrossDomainAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -95,22 +95,17 @@ export declare class UniversalDataAccessAnalyzer extends UniversalAnalyzer {
|
|
|
95
95
|
*/
|
|
96
96
|
private containsSQLStructure;
|
|
97
97
|
/**
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
*
|
|
101
|
-
* SQL-like substrings.
|
|
102
|
-
*/
|
|
103
|
-
private isDBCallee;
|
|
104
|
-
/**
|
|
105
|
-
* R3.1: Gate template literal SQL detection by parent context.
|
|
106
|
-
* Template literals in non-DB sinks (console.log, page.evaluate) must not
|
|
107
|
-
* trigger sql-injection-risk. Conservative: variable assignments and bare
|
|
108
|
-
* statements pass the gate (they may flow to a DB call).
|
|
98
|
+
* Spec 17 R2 provenance gate: a template literal is a SQL candidate
|
|
99
|
+
* because of where it sits (inside a DB-provenanced call's arguments),
|
|
100
|
+
* NOT because its body contains SQL-shaped substrings.
|
|
109
101
|
*
|
|
110
|
-
*
|
|
111
|
-
*
|
|
102
|
+
* Content scanning with substring matching is removed — template bodies
|
|
103
|
+
* containing natural-language words like "from" or "select" are no longer
|
|
104
|
+
* misclassified. The cost: template literals assigned to variables whose
|
|
105
|
+
* values eventually flow to DB calls are not detected (requires dataflow
|
|
106
|
+
* analysis, which is outside the product's stated scope per Spec 15 R3).
|
|
112
107
|
*/
|
|
113
|
-
private
|
|
108
|
+
private isTemplateInDBProvenancedCall;
|
|
114
109
|
private isOrmPattern;
|
|
115
110
|
private isDatabaseCall;
|
|
116
111
|
private extractTables;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UniversalDataAccessAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/analyzers/universal/UniversalDataAccessAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,GAAG,EAAE,eAAe,EAAW,MAAM,0BAA0B,CAAC;AAS9E;;GAEG;AACH,MAAM,WAAW,wBAAwB;IAEvC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAG5B,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAGhC,SAAS,CAAC,EAAE;QACV,CAAC,GAAG,EAAE,MAAM,GAAG;YACb,IAAI,EAAE,MAAM,CAAC;YACb,cAAc,EAAE,MAAM,EAAE,CAAC;YACzB,aAAa,EAAE,MAAM,EAAE,CAAC;YACxB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;SACxB,CAAC;KACH,CAAC;IAGF,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAIhC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAE3B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE5B,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,KAAK,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,KAAK,CAAC;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,IAAI,EAAE,MAAM,CAAC;aAAE,CAAC,CAAC;SACjD,CAAC,CAAC;KACJ,CAAC,CAAC;IAGH,aAAa,CAAC,EAAE;QACd,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;QACf,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;QACf,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IAGF,qBAAqB,CAAC,EAAE;QACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;IAGF,gBAAgB,CAAC,EAAE;QACjB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC7B,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;KACjC,CAAC;CACH;AAED,eAAO,MAAM,0BAA0B,EAAE,wBAiDxC,CAAC;AAyBF,qBAAa,2BAA4B,SAAQ,iBAAiB;IAChE,QAAQ,CAAC,IAAI,iBAAiB;IAC9B,QAAQ,CAAC,WAAW,mEAAmE;IACvF,QAAQ,CAAC,QAAQ,cAAc;IAE/B,UAAgB,UAAU,CACxB,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,wBAAwB,EAChC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,SAAS,EAAE,CAAC,CAyCtB;IAED;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAoB1B;;OAEG;IACH,OAAO,CAAC,oBAAoB;
|
|
1
|
+
{"version":3,"file":"UniversalDataAccessAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/analyzers/universal/UniversalDataAccessAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,GAAG,EAAE,eAAe,EAAW,MAAM,0BAA0B,CAAC;AAS9E;;GAEG;AACH,MAAM,WAAW,wBAAwB;IAEvC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAG5B,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAGhC,SAAS,CAAC,EAAE;QACV,CAAC,GAAG,EAAE,MAAM,GAAG;YACb,IAAI,EAAE,MAAM,CAAC;YACb,cAAc,EAAE,MAAM,EAAE,CAAC;YACzB,aAAa,EAAE,MAAM,EAAE,CAAC;YACxB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;SACxB,CAAC;KACH,CAAC;IAGF,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAIhC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAE3B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE5B,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,KAAK,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,KAAK,CAAC;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,IAAI,EAAE,MAAM,CAAC;aAAE,CAAC,CAAC;SACjD,CAAC,CAAC;KACJ,CAAC,CAAC;IAGH,aAAa,CAAC,EAAE;QACd,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;QACf,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;QACf,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IAGF,qBAAqB,CAAC,EAAE;QACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;IAGF,gBAAgB,CAAC,EAAE;QACjB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC7B,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;KACjC,CAAC;CACH;AAED,eAAO,MAAM,0BAA0B,EAAE,wBAiDxC,CAAC;AAyBF,qBAAa,2BAA4B,SAAQ,iBAAiB;IAChE,QAAQ,CAAC,IAAI,iBAAiB;IAC9B,QAAQ,CAAC,WAAW,mEAAmE;IACvF,QAAQ,CAAC,QAAQ,cAAc;IAE/B,UAAgB,UAAU,CACxB,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,wBAAwB,EAChC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,SAAS,EAAE,CAAC,CAyCtB;IAED;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAoB1B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAsH5B;;OAEG;IACH,OAAO,CAAC,YAAY;IAiCpB;;OAEG;IACH,OAAO,CAAC,eAAe;IA+EvB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA6D5B;;OAEG;IACH,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,mBAAmB;IAM3B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,oBAAoB;IAO5B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,6BAA6B;IA2BrC,OAAO,CAAC,YAAY;IAgCpB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,aAAa;IAyCrB,OAAO,CAAC,qBAAqB;IAuD7B,OAAO,CAAC,kBAAkB;IA8B1B,OAAO,CAAC,iBAAiB;IAMzB;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,iBAAiB;IAmCzB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,kBAAkB;IAc1B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IA8DxB;;;OAGG;IACH;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IA6CpB;;;;;;;OAOG;IACH,OAAO,CAAC,iBAAiB;IAmCzB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IA4B1B;;OAEG;IACH,OAAO,CAAC,eAAe;IAevB;;;;;;OAMG;IACH,OAAO,CAAC,yBAAyB;IA4BjC;;OAEG;IACH,OAAO,CAAC,WAAW;CAwBpB"}
|
|
@@ -124,24 +124,18 @@ export class UniversalDataAccessAnalyzer extends UniversalAnalyzer {
|
|
|
124
124
|
return true;
|
|
125
125
|
}
|
|
126
126
|
}
|
|
127
|
-
else if (this.isDBCallee(node, adapter, sourceCode)) {
|
|
128
|
-
return true;
|
|
129
|
-
}
|
|
130
127
|
}
|
|
131
|
-
//
|
|
128
|
+
// Spec 17 R2: Template literals are SQL candidates because of
|
|
129
|
+
// where they sit (DB-provenanced call arguments), not what their
|
|
130
|
+
// body contains. Content scanning with substring matching is removed.
|
|
132
131
|
if (this.isTemplateLiteral(node, adapter)) {
|
|
133
|
-
return this.
|
|
134
|
-
this.isTemplateInDBCallOrVariableContext(node, adapter, sourceCode, provenanceContext);
|
|
132
|
+
return this.isTemplateInDBProvenancedCall(node, adapter, sourceCode, provenanceContext);
|
|
135
133
|
}
|
|
136
|
-
//
|
|
134
|
+
// Variable assignment with SQL structure — no child template check:
|
|
135
|
+
// the template-literal path is now provenance-only (Spec 17 R2), so
|
|
136
|
+
// there is no overlap risk from child template detection.
|
|
137
137
|
if (this.isVariableAssignment(node, adapter)) {
|
|
138
|
-
|
|
139
|
-
return false;
|
|
140
|
-
// Skip parent nodes if they contain template literals we'll analyze separately
|
|
141
|
-
const children = adapter.getChildren(node);
|
|
142
|
-
const hasRelevantChild = children.some(child => this.isTemplateLiteral(child, adapter) &&
|
|
143
|
-
this.containsSQLKeywords(adapter.getNodeText(child, sourceCode)));
|
|
144
|
-
return !hasRelevantChild;
|
|
138
|
+
return this.containsSQLStructure(nodeText);
|
|
145
139
|
}
|
|
146
140
|
return false;
|
|
147
141
|
}
|
|
@@ -356,55 +350,34 @@ export class UniversalDataAccessAnalyzer extends UniversalAnalyzer {
|
|
|
356
350
|
return found.length >= 2;
|
|
357
351
|
}
|
|
358
352
|
/**
|
|
359
|
-
*
|
|
360
|
-
*
|
|
361
|
-
*
|
|
362
|
-
* SQL-like substrings.
|
|
363
|
-
*/
|
|
364
|
-
isDBCallee(node, adapter, sourceCode) {
|
|
365
|
-
const children = adapter.getChildren(node);
|
|
366
|
-
const calleeParts = [];
|
|
367
|
-
for (const child of children) {
|
|
368
|
-
if (adapter.getNodeType(child) === 'arguments')
|
|
369
|
-
break;
|
|
370
|
-
calleeParts.push(adapter.getNodeText(child, sourceCode));
|
|
371
|
-
}
|
|
372
|
-
const calleeText = calleeParts.join('');
|
|
373
|
-
const dbPatterns = ['select', 'insert', 'update', 'delete', 'from', 'where', 'execute', 'query', 'find', 'aggregate', 'count', 'distinct'];
|
|
374
|
-
return dbPatterns.some(pattern => calleeText.toLowerCase().includes(pattern));
|
|
375
|
-
}
|
|
376
|
-
/**
|
|
377
|
-
* R3.1: Gate template literal SQL detection by parent context.
|
|
378
|
-
* Template literals in non-DB sinks (console.log, page.evaluate) must not
|
|
379
|
-
* trigger sql-injection-risk. Conservative: variable assignments and bare
|
|
380
|
-
* statements pass the gate (they may flow to a DB call).
|
|
353
|
+
* Spec 17 R2 provenance gate: a template literal is a SQL candidate
|
|
354
|
+
* because of where it sits (inside a DB-provenanced call's arguments),
|
|
355
|
+
* NOT because its body contains SQL-shaped substrings.
|
|
381
356
|
*
|
|
382
|
-
*
|
|
383
|
-
*
|
|
357
|
+
* Content scanning with substring matching is removed — template bodies
|
|
358
|
+
* containing natural-language words like "from" or "select" are no longer
|
|
359
|
+
* misclassified. The cost: template literals assigned to variables whose
|
|
360
|
+
* values eventually flow to DB calls are not detected (requires dataflow
|
|
361
|
+
* analysis, which is outside the product's stated scope per Spec 15 R3).
|
|
384
362
|
*/
|
|
385
|
-
|
|
363
|
+
isTemplateInDBProvenancedCall(node, adapter, sourceCode, provenanceContext) {
|
|
386
364
|
const parent = adapter.getParent(node);
|
|
387
365
|
if (!parent)
|
|
388
366
|
return false;
|
|
389
367
|
const parentType = adapter.getNodeType(parent);
|
|
390
|
-
//
|
|
368
|
+
// Only the arguments-of-DB-call path survives the Spec 17 R2 cut.
|
|
369
|
+
// Variable-assignment and statement-level conservative passes are
|
|
370
|
+
// removed — they were the primary source of false positives.
|
|
391
371
|
if (parentType === 'arguments') {
|
|
392
372
|
const callExpr = adapter.getParent(parent);
|
|
393
373
|
if (!callExpr || adapter.getNodeType(callExpr) !== 'call_expression')
|
|
394
374
|
return false;
|
|
395
|
-
// Spec 21: Use provenance when available
|
|
396
375
|
if (provenanceContext) {
|
|
397
376
|
return isDBProvenanced(callExpr, adapter, sourceCode, provenanceContext, DB_CALL_METHODS);
|
|
398
377
|
}
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
if (parentType === 'binary_expression' || parentType === 'variable_declarator' || parentType === 'variable_declaration') {
|
|
403
|
-
return true;
|
|
404
|
-
}
|
|
405
|
-
// Statement-level or program-level → conservative
|
|
406
|
-
if (parentType === 'expression_statement' || parentType === 'program') {
|
|
407
|
-
return true;
|
|
378
|
+
// Without provenance context, can't determine DB association —
|
|
379
|
+
// do not speculate.
|
|
380
|
+
return false;
|
|
408
381
|
}
|
|
409
382
|
return false;
|
|
410
383
|
}
|
|
@@ -672,13 +645,24 @@ export class UniversalDataAccessAnalyzer extends UniversalAnalyzer {
|
|
|
672
645
|
return true;
|
|
673
646
|
}
|
|
674
647
|
}
|
|
675
|
-
// Template literal
|
|
648
|
+
// Spec 17 R2: Template literal is a DB node only when it sits
|
|
649
|
+
// inside a DB-provenanced call's arguments — no content scan.
|
|
676
650
|
if (this.isTemplateLiteral(node, adapter)) {
|
|
677
|
-
|
|
651
|
+
const parent = adapter.getParent(node);
|
|
652
|
+
if (parent && adapter.getNodeType(parent) === 'arguments') {
|
|
653
|
+
const callExpr = adapter.getParent(parent);
|
|
654
|
+
if (callExpr && adapter.getNodeType(callExpr) === 'call_expression') {
|
|
655
|
+
return isDBProvenanced(callExpr, adapter, sourceCode, provenanceContext, DB_CALL_METHODS);
|
|
656
|
+
}
|
|
657
|
+
}
|
|
658
|
+
return false;
|
|
678
659
|
}
|
|
679
660
|
return false;
|
|
680
661
|
}
|
|
681
|
-
// Legacy fallback: name-based matching for names mode / no context
|
|
662
|
+
// Legacy fallback: name-based matching for names mode / no context.
|
|
663
|
+
// Template-literal content scanning is removed (Spec 17 R2) — without
|
|
664
|
+
// provenance context, we can't determine if a template literal is SQL;
|
|
665
|
+
// function-call-based SQL detection still works via dbPatterns match.
|
|
682
666
|
const nodeText = adapter.getNodeText(node, sourceCode);
|
|
683
667
|
if (this.isFunctionCall(node, adapter)) {
|
|
684
668
|
const dbPatterns = ['select', 'insert', 'update', 'delete', 'from', 'where', 'execute', 'query', 'find', 'aggregate', 'count', 'distinct'];
|
|
@@ -686,9 +670,6 @@ export class UniversalDataAccessAnalyzer extends UniversalAnalyzer {
|
|
|
686
670
|
return true;
|
|
687
671
|
}
|
|
688
672
|
}
|
|
689
|
-
if (this.isTemplateLiteral(node, adapter)) {
|
|
690
|
-
return this.containsSQLKeywords(nodeText);
|
|
691
|
-
}
|
|
692
673
|
return false;
|
|
693
674
|
}
|
|
694
675
|
/**
|
|
@@ -812,6 +793,10 @@ export class UniversalDataAccessAnalyzer extends UniversalAnalyzer {
|
|
|
812
793
|
return node.name;
|
|
813
794
|
if (node.text && typeof node.text === 'string')
|
|
814
795
|
return node.text;
|
|
796
|
+
// Fall back to the raw tree-sitter node's text content (leaf identifiers etc.)
|
|
797
|
+
const rawText = node.raw?.text;
|
|
798
|
+
if (typeof rawText === 'string' && rawText.length > 0)
|
|
799
|
+
return rawText;
|
|
815
800
|
// Walk children for identifier / property_identifier
|
|
816
801
|
if (node.children) {
|
|
817
802
|
for (const child of node.children) {
|