code-auditor-mcp 3.4.17 → 3.5.0
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 +94 -0
- package/README.md +5 -5
- package/dist/analyzers/applicability.d.ts +13 -0
- package/dist/analyzers/applicability.d.ts.map +1 -1
- package/dist/analyzers/applicability.js +37 -0
- package/dist/analyzers/applicability.js.map +1 -1
- package/dist/analyzers/cross-language/APIContractAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/cross-language/APIContractAnalyzer.js +23 -2
- package/dist/analyzers/cross-language/APIContractAnalyzer.js.map +1 -1
- package/dist/analyzers/cross-language/DependencyGraphBuilder.d.ts +52 -9
- package/dist/analyzers/cross-language/DependencyGraphBuilder.d.ts.map +1 -1
- package/dist/analyzers/cross-language/DependencyGraphBuilder.js +228 -55
- package/dist/analyzers/cross-language/DependencyGraphBuilder.js.map +1 -1
- package/dist/analyzers/cross-language/SchemaValidator.d.ts +19 -12
- package/dist/analyzers/cross-language/SchemaValidator.d.ts.map +1 -1
- package/dist/analyzers/cross-language/SchemaValidator.js +78 -111
- package/dist/analyzers/cross-language/SchemaValidator.js.map +1 -1
- package/dist/analyzers/crossDomain/CrossDomainAnalyzer.d.ts +0 -6
- package/dist/analyzers/crossDomain/CrossDomainAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/crossDomain/CrossDomainAnalyzer.js +85 -73
- package/dist/analyzers/crossDomain/CrossDomainAnalyzer.js.map +1 -1
- package/dist/analyzers/documentationAnalyzer.js +5 -5
- package/dist/analyzers/documentationAnalyzer.js.map +1 -1
- package/dist/analyzers/invariantsAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/invariantsAnalyzer.js +1 -0
- package/dist/analyzers/invariantsAnalyzer.js.map +1 -1
- package/dist/analyzers/provenance.d.ts +7 -9
- package/dist/analyzers/provenance.d.ts.map +1 -1
- package/dist/analyzers/provenance.js +88 -124
- package/dist/analyzers/provenance.js.map +1 -1
- package/dist/analyzers/reactAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/reactAnalyzer.js +120 -21
- package/dist/analyzers/reactAnalyzer.js.map +1 -1
- package/dist/analyzers/ruleRegistry.d.ts +21 -0
- package/dist/analyzers/ruleRegistry.d.ts.map +1 -1
- package/dist/analyzers/ruleRegistry.js +61 -12
- package/dist/analyzers/ruleRegistry.js.map +1 -1
- package/dist/analyzers/universal/UniversalConventionsAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalConventionsAnalyzer.js +60 -24
- package/dist/analyzers/universal/UniversalConventionsAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalDRYAnalyzer.js +5 -2
- package/dist/analyzers/universal/UniversalDRYAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js +173 -56
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.d.ts +2 -1
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js +23 -12
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts +11 -1
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js +60 -22
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts +2 -3
- package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalStylesAnalyzer.js +258 -87
- package/dist/analyzers/universal/UniversalStylesAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/schema/codeAnalysis.d.ts.map +1 -1
- package/dist/analyzers/universal/schema/codeAnalysis.js +7 -1
- package/dist/analyzers/universal/schema/codeAnalysis.js.map +1 -1
- package/dist/analyzers/universal/schema/jsonSchema.js +7 -11
- package/dist/analyzers/universal/schema/jsonSchema.js.map +1 -1
- package/dist/applyDataDirEnv.js +1 -1
- package/dist/applyDataDirEnv.js.map +1 -1
- package/dist/auditRouter.d.ts +41 -0
- package/dist/auditRouter.d.ts.map +1 -0
- package/dist/auditRouter.js +185 -0
- package/dist/auditRouter.js.map +1 -0
- package/dist/auditRunner.d.ts.map +1 -1
- package/dist/auditRunner.js +97 -58
- package/dist/auditRunner.js.map +1 -1
- package/dist/cli.js +247 -23
- package/dist/cli.js.map +1 -1
- package/dist/codeIndexDB.d.ts.map +1 -1
- package/dist/codeIndexDB.js +36 -2
- package/dist/codeIndexDB.js.map +1 -1
- package/dist/componentScanner.d.ts.map +1 -1
- package/dist/componentScanner.js +7 -2
- package/dist/componentScanner.js.map +1 -1
- package/dist/config/configLoader.d.ts +9 -0
- package/dist/config/configLoader.d.ts.map +1 -1
- package/dist/config/configLoader.js +30 -2
- package/dist/config/configLoader.js.map +1 -1
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +10 -3
- package/dist/config/defaults.js.map +1 -1
- package/dist/dataPaths.d.ts +8 -1
- package/dist/dataPaths.d.ts.map +1 -1
- package/dist/dataPaths.js +57 -5
- package/dist/dataPaths.js.map +1 -1
- package/dist/functionScanner.d.ts.map +1 -1
- package/dist/functionScanner.js +1 -17
- package/dist/functionScanner.js.map +1 -1
- package/dist/grammars/tree-sitter-scss.wasm +0 -0
- package/dist/invariants/ruleEngine.d.ts +8 -0
- package/dist/invariants/ruleEngine.d.ts.map +1 -1
- package/dist/invariants/ruleEngine.js +35 -16
- package/dist/invariants/ruleEngine.js.map +1 -1
- package/dist/languages/LanguageOrchestrator.d.ts +10 -11
- package/dist/languages/LanguageOrchestrator.d.ts.map +1 -1
- package/dist/languages/LanguageOrchestrator.js +135 -101
- package/dist/languages/LanguageOrchestrator.js.map +1 -1
- package/dist/languages/RuntimeManager.d.ts +28 -1
- package/dist/languages/RuntimeManager.d.ts.map +1 -1
- package/dist/languages/RuntimeManager.js +160 -49
- package/dist/languages/RuntimeManager.js.map +1 -1
- package/dist/languages/go/GoAdapter.d.ts +2 -0
- package/dist/languages/go/GoAdapter.d.ts.map +1 -1
- package/dist/languages/go/GoAdapter.js +15 -22
- package/dist/languages/go/GoAdapter.js.map +1 -1
- package/dist/languages/go/analyzer +0 -0
- package/dist/languages/go/analyzer-src/analyzer.go +510 -0
- package/dist/languages/go/analyzer-src/go.mod +3 -0
- package/dist/languages/go/analyzer-src/indexer.go +268 -0
- package/dist/languages/go/analyzer-src/parser.go +461 -0
- package/dist/languages/go/analyzer-src/solid.go +395 -0
- package/dist/languages/go/analyzer-src/testconventions.go +25 -0
- package/dist/languages/go/analyzer-src/types.go +148 -0
- package/dist/languages/go/go.mod +7 -0
- package/dist/languages/go/main.go +203 -0
- package/dist/languages/testConventions.d.ts +35 -0
- package/dist/languages/testConventions.d.ts.map +1 -0
- package/dist/languages/testConventions.js +51 -0
- package/dist/languages/testConventions.js.map +1 -0
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts +3 -0
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts.map +1 -1
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js +25 -18
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js.map +1 -1
- package/dist/mcp-tools/whitelistTools.d.ts +1 -1
- package/dist/mcp-tools/workflowGuide.js +3 -3
- package/dist/mcp-tools/workflowGuide.js.map +1 -1
- package/dist/mcp-tools-shared.d.ts +0 -3
- package/dist/mcp-tools-shared.d.ts.map +1 -1
- package/dist/mcp-tools-shared.js +24 -128
- package/dist/mcp-tools-shared.js.map +1 -1
- package/dist/mcp.js +18 -12
- package/dist/mcp.js.map +1 -1
- package/dist/mcpAuditJobs.d.ts.map +1 -1
- package/dist/mcpAuditJobs.js +13 -0
- package/dist/mcpAuditJobs.js.map +1 -1
- package/dist/mcpAutoIndex.js +1 -1
- package/dist/mcpAutoIndex.js.map +1 -1
- package/dist/nextFile.d.ts +21 -0
- package/dist/nextFile.d.ts.map +1 -0
- package/dist/nextFile.js +51 -0
- package/dist/nextFile.js.map +1 -0
- package/dist/nextFileIncremental.d.ts +141 -0
- package/dist/nextFileIncremental.d.ts.map +1 -0
- package/dist/nextFileIncremental.js +314 -0
- package/dist/nextFileIncremental.js.map +1 -0
- package/dist/pipeline.d.ts.map +1 -1
- package/dist/pipeline.js +22 -0
- package/dist/pipeline.js.map +1 -1
- package/dist/pipelineAdapters.d.ts +17 -0
- package/dist/pipelineAdapters.d.ts.map +1 -1
- package/dist/pipelineAdapters.js +800 -44
- package/dist/pipelineAdapters.js.map +1 -1
- package/dist/reporting/jsonReportGenerator.d.ts.map +1 -1
- package/dist/reporting/jsonReportGenerator.js +11 -30
- package/dist/reporting/jsonReportGenerator.js.map +1 -1
- package/dist/styles/styleIndexer.d.ts +7 -0
- package/dist/styles/styleIndexer.d.ts.map +1 -1
- package/dist/styles/styleIndexer.js +44 -61
- package/dist/styles/styleIndexer.js.map +1 -1
- package/dist/types/crossLanguage.d.ts +1 -0
- package/dist/types/crossLanguage.d.ts.map +1 -1
- package/dist/types.d.ts +27 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/fileDiscovery.d.ts +11 -2
- package/dist/utils/fileDiscovery.d.ts.map +1 -1
- package/dist/utils/fileDiscovery.js +23 -5
- package/dist/utils/fileDiscovery.js.map +1 -1
- package/dist/utils/reactDetection.d.ts.map +1 -1
- package/dist/utils/reactDetection.js +59 -44
- package/dist/utils/reactDetection.js.map +1 -1
- package/package.json +31 -27
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/README.md +6 -6
- package/plugin/hooks/hooks.json +4 -0
- package/plugin/scripts/hook-audit.sh +0 -0
- package/plugin/scripts/hook-self-audit.sh +107 -0
- package/plugin/skills/code-auditor/SKILL-RULE-KINDS.md +55 -7
- package/plugin/skills/code-auditor/SKILL.md +22 -23
|
@@ -28,29 +28,25 @@ export class SchemaValidator {
|
|
|
28
28
|
*/
|
|
29
29
|
async validateSchemas(schemas) {
|
|
30
30
|
const violations = [];
|
|
31
|
-
// Group schemas by name
|
|
31
|
+
// Cross-language comparison only. Group schemas by normalized name, then
|
|
32
|
+
// compare one representative per language against the reference language.
|
|
33
|
+
// Same-language duplicates (e.g. two TypeScript interfaces sharing a name
|
|
34
|
+
// in different modules) are not a cross-language contract and are out of
|
|
35
|
+
// scope; per-schema naming/deprecation hygiene is owned by the conventions
|
|
36
|
+
// analyzer, not this validator.
|
|
32
37
|
const schemaGroups = groupSchemasByName(schemas);
|
|
33
|
-
for (const
|
|
34
|
-
|
|
35
|
-
|
|
38
|
+
for (const groupSchemas of schemaGroups.values()) {
|
|
39
|
+
const byLanguage = new Map();
|
|
40
|
+
for (const schema of groupSchemas) {
|
|
41
|
+
if (!byLanguage.has(schema.language))
|
|
42
|
+
byLanguage.set(schema.language, schema);
|
|
43
|
+
}
|
|
44
|
+
if (byLanguage.size < 2)
|
|
45
|
+
continue;
|
|
46
|
+
const [reference, ...others] = [...byLanguage.values()];
|
|
47
|
+
for (const current of others) {
|
|
48
|
+
violations.push(...await this.compareSchemas(reference, current));
|
|
36
49
|
}
|
|
37
|
-
}
|
|
38
|
-
// Validate individual schema consistency
|
|
39
|
-
for (const schema of schemas) {
|
|
40
|
-
violations.push(...await this.validateIndividualSchema(schema));
|
|
41
|
-
}
|
|
42
|
-
return violations;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Validate a group of schemas that should be equivalent
|
|
46
|
-
*/
|
|
47
|
-
async validateSchemaGroup(schemaName, schemas) {
|
|
48
|
-
const violations = [];
|
|
49
|
-
// Use the first schema as the reference
|
|
50
|
-
const reference = schemas[0];
|
|
51
|
-
for (let i = 1; i < schemas.length; i++) {
|
|
52
|
-
const current = schemas[i];
|
|
53
|
-
violations.push(...await this.compareSchemas(reference, current));
|
|
54
50
|
}
|
|
55
51
|
return violations;
|
|
56
52
|
}
|
|
@@ -140,34 +136,6 @@ export class SchemaValidator {
|
|
|
140
136
|
}
|
|
141
137
|
return violations;
|
|
142
138
|
}
|
|
143
|
-
/**
|
|
144
|
-
* Validate individual schema for internal consistency
|
|
145
|
-
*/
|
|
146
|
-
async validateIndividualSchema(schema) {
|
|
147
|
-
const violations = [];
|
|
148
|
-
// Check for deprecated field usage
|
|
149
|
-
if (this.options.checkDeprecated) {
|
|
150
|
-
const deprecatedFields = schema.fields.filter(f => f.deprecated);
|
|
151
|
-
if (deprecatedFields.length > 0) {
|
|
152
|
-
violations.push({
|
|
153
|
-
file: schema.file,
|
|
154
|
-
line: schema.line,
|
|
155
|
-
severity: 'warning',
|
|
156
|
-
message: `Schema ${schema.name} contains ${deprecatedFields.length} deprecated fields`,
|
|
157
|
-
rule: "field-mismatch",
|
|
158
|
-
violationType: 'field-mismatch',
|
|
159
|
-
schemas: [schema],
|
|
160
|
-
suggestion: 'Review and migrate away from deprecated fields',
|
|
161
|
-
analyzer: 'schema-validator',
|
|
162
|
-
category: 'cross-language-schema'
|
|
163
|
-
});
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
// Check for naming consistency
|
|
167
|
-
const namingViolations = this.checkFieldNaming(schema);
|
|
168
|
-
violations.push(...namingViolations);
|
|
169
|
-
return violations;
|
|
170
|
-
}
|
|
171
139
|
/**
|
|
172
140
|
* Check version compatibility between schemas
|
|
173
141
|
*/
|
|
@@ -206,7 +174,7 @@ export class SchemaValidator {
|
|
|
206
174
|
file: curSchema.file,
|
|
207
175
|
line: curSchema.line,
|
|
208
176
|
severity: 'warning',
|
|
209
|
-
message: `Type
|
|
177
|
+
message: `Type-name strings differ for field '${fieldName}': expected ${normalizedRefType}, got ${normalizedCurType}`,
|
|
210
178
|
rule: "schema-field-mismatch",
|
|
211
179
|
violationType: 'schema-field-mismatch',
|
|
212
180
|
schemas: [refSchema, curSchema],
|
|
@@ -287,31 +255,6 @@ export class SchemaValidator {
|
|
|
287
255
|
}
|
|
288
256
|
return violations;
|
|
289
257
|
}
|
|
290
|
-
/**
|
|
291
|
-
* Check field naming consistency
|
|
292
|
-
*/
|
|
293
|
-
checkFieldNaming(schema) {
|
|
294
|
-
const violations = [];
|
|
295
|
-
for (const field of schema.fields) {
|
|
296
|
-
// Check for consistent naming convention
|
|
297
|
-
if (!isConsistentNaming(field.name, schema.language)) {
|
|
298
|
-
violations.push({
|
|
299
|
-
file: schema.file,
|
|
300
|
-
line: schema.line,
|
|
301
|
-
severity: 'suggestion',
|
|
302
|
-
message: `Field '${field.name}' doesn't follow ${schema.language} naming conventions`,
|
|
303
|
-
rule: "field-mismatch",
|
|
304
|
-
violationType: 'field-mismatch',
|
|
305
|
-
schemas: [schema],
|
|
306
|
-
fieldName: field.name,
|
|
307
|
-
suggestion: `Use ${getRecommendedNaming(field.name, schema.language)} naming convention`,
|
|
308
|
-
analyzer: 'schema-validator',
|
|
309
|
-
category: 'cross-language-schema'
|
|
310
|
-
});
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
return violations;
|
|
314
|
-
}
|
|
315
258
|
/**
|
|
316
259
|
* Check if versions are compatible
|
|
317
260
|
*/
|
|
@@ -349,9 +292,31 @@ function groupSchemasByName(schemas) {
|
|
|
349
292
|
* Normalize schema name for comparison
|
|
350
293
|
*/
|
|
351
294
|
function normalizeSchemaName(name) {
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
295
|
+
// Lowercase and strip separators only, so snake_case (TS) and PascalCase (Go)
|
|
296
|
+
// spellings of the same logical schema group together. Do NOT strip
|
|
297
|
+
// request/response/dto/model suffixes — those are distinct schemas, and
|
|
298
|
+
// stripping them collapsed e.g. User, UserDto, and UserRequest into one
|
|
299
|
+
// group, producing false missing/extra-field pairs.
|
|
300
|
+
return name.toLowerCase().replace(/[-_]/g, '');
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Count cross-language schema pairs — groups of the same logical schema name
|
|
304
|
+
* implemented in ≥2 languages. Returns the number of comparisons
|
|
305
|
+
* {@link SchemaValidator.validateSchemas} would perform (one reference plus
|
|
306
|
+
* every additional language per group). A single-language corpus (or one with
|
|
307
|
+
* no schemas at all) yields zero, which the caller uses to report "no
|
|
308
|
+
* cross-language pairs found" instead of a misleadingly clean zero.
|
|
309
|
+
* @param schemas
|
|
310
|
+
* @returns
|
|
311
|
+
*/
|
|
312
|
+
export function countCrossLanguagePairs(schemas) {
|
|
313
|
+
let pairs = 0;
|
|
314
|
+
for (const groupSchemas of groupSchemasByName(schemas).values()) {
|
|
315
|
+
const languages = new Set(groupSchemas.map(s => s.language));
|
|
316
|
+
if (languages.size >= 2)
|
|
317
|
+
pairs += languages.size - 1;
|
|
318
|
+
}
|
|
319
|
+
return pairs;
|
|
355
320
|
}
|
|
356
321
|
/**
|
|
357
322
|
* Normalize type names across languages
|
|
@@ -415,38 +380,6 @@ function parseVersion(version) {
|
|
|
415
380
|
patch: parts[2] || 0
|
|
416
381
|
};
|
|
417
382
|
}
|
|
418
|
-
/**
|
|
419
|
-
* Check if field name follows language conventions
|
|
420
|
-
*/
|
|
421
|
-
function isConsistentNaming(fieldName, language) {
|
|
422
|
-
switch (language) {
|
|
423
|
-
case 'typescript':
|
|
424
|
-
case 'javascript':
|
|
425
|
-
return /^[a-z][a-zA-Z0-9]*$/.test(fieldName); // camelCase
|
|
426
|
-
case 'go':
|
|
427
|
-
return /^[A-Z][a-zA-Z0-9]*$/.test(fieldName); // PascalCase for exported
|
|
428
|
-
case 'python':
|
|
429
|
-
return /^[a-z][a-z0-9_]*$/.test(fieldName); // snake_case
|
|
430
|
-
default:
|
|
431
|
-
return true;
|
|
432
|
-
}
|
|
433
|
-
}
|
|
434
|
-
/**
|
|
435
|
-
* Get recommended naming convention
|
|
436
|
-
*/
|
|
437
|
-
function getRecommendedNaming(fieldName, language) {
|
|
438
|
-
switch (language) {
|
|
439
|
-
case 'typescript':
|
|
440
|
-
case 'javascript':
|
|
441
|
-
return 'camelCase';
|
|
442
|
-
case 'go':
|
|
443
|
-
return 'PascalCase';
|
|
444
|
-
case 'python':
|
|
445
|
-
return 'snake_case';
|
|
446
|
-
default:
|
|
447
|
-
return 'consistent';
|
|
448
|
-
}
|
|
449
|
-
}
|
|
450
383
|
// ---------------------------------------------------------------------------
|
|
451
384
|
// Schema extraction (pure functions — no validator state)
|
|
452
385
|
// ---------------------------------------------------------------------------
|
|
@@ -509,13 +442,47 @@ function extractTypeScriptInterface(entity) {
|
|
|
509
442
|
})) || []
|
|
510
443
|
};
|
|
511
444
|
}
|
|
445
|
+
/**
|
|
446
|
+
* True when a Go field type is a non-nilable value type (hence always present),
|
|
447
|
+
* i.e. "required". Nilable reference types — pointers, slices, maps, channels,
|
|
448
|
+
* functions, and the built-in interface types — are optional.
|
|
449
|
+
* @param type
|
|
450
|
+
* @returns
|
|
451
|
+
*/
|
|
452
|
+
export function isGoValueType(type) {
|
|
453
|
+
if (!type)
|
|
454
|
+
return false;
|
|
455
|
+
const t = type.trim();
|
|
456
|
+
if (t === 'interface' || t === 'interface{}' || t === 'any' || t === 'error') {
|
|
457
|
+
return false;
|
|
458
|
+
}
|
|
459
|
+
// Nilable reference types. `[]` is a slice (nilable); `[N]` is a fixed-size
|
|
460
|
+
// array (value type), so only the empty-bracket form is nilable.
|
|
461
|
+
if (t.startsWith('*'))
|
|
462
|
+
return false; // pointer
|
|
463
|
+
if (t.startsWith('[]'))
|
|
464
|
+
return false; // slice
|
|
465
|
+
if (t.startsWith('map['))
|
|
466
|
+
return false; // map
|
|
467
|
+
if (t.startsWith('chan') || t.startsWith('<-chan'))
|
|
468
|
+
return false; // channel
|
|
469
|
+
if (t.startsWith('func'))
|
|
470
|
+
return false; // function
|
|
471
|
+
return true;
|
|
472
|
+
}
|
|
512
473
|
function extractGoStruct(entity) {
|
|
513
474
|
if (entity.type !== 'struct')
|
|
514
475
|
return null;
|
|
515
476
|
const fields = entity.metadata?.fields?.map((field) => ({
|
|
516
477
|
name: field.name,
|
|
517
478
|
type: field.type,
|
|
518
|
-
|
|
479
|
+
// A Go field is required iff it is a non-nilable value type. Pointers
|
|
480
|
+
// (`*T`), slices, maps, channels, functions, and interfaces are nilable and
|
|
481
|
+
// therefore optional. The old `isExported` proxy was inverted: an exported
|
|
482
|
+
// pointer (`Email *string`) is optional, and an unexported value (`id int`)
|
|
483
|
+
// is always present — exportedness is a visibility signal, not a
|
|
484
|
+
// requiredness one.
|
|
485
|
+
required: isGoValueType(field.type),
|
|
519
486
|
description: field.tag
|
|
520
487
|
})) || [];
|
|
521
488
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaValidator.js","sourceRoot":"","sources":["../../../src/analyzers/cross-language/SchemaValidator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SchemaValidator.js","sourceRoot":"","sources":["../../../src/analyzers/cross-language/SchemaValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,12 +38,6 @@ export declare class CrossDomainAnalyzer extends UniversalAnalyzer {
|
|
|
38
38
|
* @returns
|
|
39
39
|
*/
|
|
40
40
|
analyze(files: string[], config?: any, options?: any): Promise<AnalyzerResult>;
|
|
41
|
-
/**
|
|
42
|
-
* Project root scoping: in test environments the in-memory DB singleton is
|
|
43
|
-
* shared across tests, so schema_usage entries from previous test cases leak
|
|
44
|
-
* into subsequent queries. Build a file-path LIKE clause scoped to root.
|
|
45
|
-
*/
|
|
46
|
-
private resolveFilePathClause;
|
|
47
41
|
/** Run the R1/R3/R4 detectors and collect their violations. */
|
|
48
42
|
private runDetectors;
|
|
49
43
|
/** Count distinct files with schema_usage entries. */
|
|
@@ -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;AAiQzE;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,iBAAiB;IACxD,QAAQ,CAAC,IAAI,kBAAiB;IAC9B,QAAQ,CAAC,WAAW,sFACiE;IACrF,QAAQ,CAAC,QAAQ,kBAAkB;IAEnC;;;;;;;;OAQG;IACG,OAAO,CACX,KAAK,EAAE,MAAM,EAAE,EACf,MAAM,GAAE,GAAQ,EAChB,OAAO,GAAE,GAAQ,GAChB,OAAO,CAAC,cAAc,CAAC,CA8BzB;IAED,+DAA+D;IAC/D,OAAO,CAAC,YAAY;IA+BpB,sDAAsD;IACtD,OAAO,CAAC,kBAAkB;IAU1B,yCAAyC;IACnC,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAEjC;CACF"}
|
|
@@ -23,10 +23,53 @@ import * as path from 'node:path';
|
|
|
23
23
|
import { UniversalAnalyzer } from '../../languages/UniversalAnalyzer.js';
|
|
24
24
|
import { VALIDATOR_PACKAGES } from '../provenance.js';
|
|
25
25
|
import { makeVisitorStatus } from '../../pipeline.js';
|
|
26
|
+
/** Chunked IN-clause bound (SQLite max host params, conservative). */
|
|
27
|
+
const SQLITE_MAX_VARIABLES = 900;
|
|
28
|
+
function resolveFileScope(config) {
|
|
29
|
+
const scopedFiles = config.isScoped ? (config.scopedFiles ?? []) : [];
|
|
30
|
+
if (scopedFiles.length > 0) {
|
|
31
|
+
const chunks = [];
|
|
32
|
+
for (let i = 0; i < scopedFiles.length; i += SQLITE_MAX_VARIABLES) {
|
|
33
|
+
chunks.push(scopedFiles.slice(i, i + SQLITE_MAX_VARIABLES));
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
apply: (column) => ({
|
|
37
|
+
clause: `AND (${chunks.map((c) => `${column} IN (${c.map(() => '?').join(', ')})`).join(' OR ')})`,
|
|
38
|
+
params: scopedFiles,
|
|
39
|
+
}),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
const projectRoot = config.projectRoot;
|
|
43
|
+
const resolvedRoot = projectRoot ? path.resolve(projectRoot) : undefined;
|
|
44
|
+
if (!resolvedRoot) {
|
|
45
|
+
return { apply: () => ({ clause: '', params: [] }) };
|
|
46
|
+
}
|
|
47
|
+
return {
|
|
48
|
+
apply: (column) => ({
|
|
49
|
+
clause: `AND ${column} LIKE ?`,
|
|
50
|
+
params: [`${resolvedRoot}%`],
|
|
51
|
+
}),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
26
54
|
// ---------------------------------------------------------------------------
|
|
27
55
|
// Call-graph helpers — pure functions with no `this` state, kept off the
|
|
28
56
|
// analyzer class to bound its aggregate cyclomatic complexity.
|
|
29
57
|
// ---------------------------------------------------------------------------
|
|
58
|
+
/**
|
|
59
|
+
* Advance a call-graph BFS frontier by one node: query `funcId`'s call
|
|
60
|
+
* neighbors and enqueue any not yet visited. Shared by the two BFS walks.
|
|
61
|
+
*/
|
|
62
|
+
function enqueueCallNeighbors(indexHandle, nextLevel, funcId, visited) {
|
|
63
|
+
const callees = indexHandle
|
|
64
|
+
.query(`SELECT neighbor_key FROM graph_cache
|
|
65
|
+
WHERE graph_type = 'call' AND node_key = ?`, [String(funcId)]);
|
|
66
|
+
for (const callee of callees) {
|
|
67
|
+
const calleeId = parseInt(callee.neighbor_key, 10);
|
|
68
|
+
if (!isNaN(calleeId) && !visited.has(calleeId)) {
|
|
69
|
+
nextLevel.push(calleeId);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
30
73
|
/**
|
|
31
74
|
* BFS through the call graph (graph_cache) up to maxDepth to check if
|
|
32
75
|
* any path from startFuncId reaches a validator function ID.
|
|
@@ -43,15 +86,7 @@ function bfsReachesValidator(indexHandle, startFuncId, validatorIds, maxDepth) {
|
|
|
43
86
|
continue;
|
|
44
87
|
visited.add(funcId);
|
|
45
88
|
// Get callees from graph_cache call edges
|
|
46
|
-
|
|
47
|
-
.query(`SELECT neighbor_key FROM graph_cache
|
|
48
|
-
WHERE graph_type = 'call' AND node_key = ?`, [String(funcId)]);
|
|
49
|
-
for (const callee of callees) {
|
|
50
|
-
const calleeId = parseInt(callee.neighbor_key, 10);
|
|
51
|
-
if (!isNaN(calleeId) && !visited.has(calleeId)) {
|
|
52
|
-
nextLevel.push(calleeId);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
89
|
+
enqueueCallNeighbors(indexHandle, nextLevel, funcId, visited);
|
|
55
90
|
}
|
|
56
91
|
currentLevel = nextLevel;
|
|
57
92
|
}
|
|
@@ -111,15 +146,7 @@ function collectReachableIds(indexHandle, startIds, maxDepth) {
|
|
|
111
146
|
continue;
|
|
112
147
|
visited.add(funcId);
|
|
113
148
|
reachableIds.add(funcId);
|
|
114
|
-
|
|
115
|
-
.query(`SELECT neighbor_key FROM graph_cache
|
|
116
|
-
WHERE graph_type = 'call' AND node_key = ?`, [String(funcId)]);
|
|
117
|
-
for (const callee of callees) {
|
|
118
|
-
const calleeId = parseInt(callee.neighbor_key, 10);
|
|
119
|
-
if (!isNaN(calleeId) && !visited.has(calleeId)) {
|
|
120
|
-
nextLevel.push(calleeId);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
149
|
+
enqueueCallNeighbors(indexHandle, nextLevel, funcId, visited);
|
|
123
150
|
}
|
|
124
151
|
currentLevel = nextLevel;
|
|
125
152
|
}
|
|
@@ -164,9 +191,9 @@ export class CrossDomainAnalyzer extends UniversalAnalyzer {
|
|
|
164
191
|
metrics: { filesAnalyzed: 0, totalViolations: 0, executionTime: Date.now() - startTime },
|
|
165
192
|
};
|
|
166
193
|
}
|
|
167
|
-
const
|
|
168
|
-
const violations = this.runDetectors(indexHandle, config,
|
|
169
|
-
const uniqueFiles = this.countDistinctFiles(indexHandle,
|
|
194
|
+
const scope = resolveFileScope(config);
|
|
195
|
+
const violations = this.runDetectors(indexHandle, config, scope);
|
|
196
|
+
const uniqueFiles = this.countDistinctFiles(indexHandle, scope);
|
|
170
197
|
return {
|
|
171
198
|
violations,
|
|
172
199
|
errors: [],
|
|
@@ -180,51 +207,38 @@ export class CrossDomainAnalyzer extends UniversalAnalyzer {
|
|
|
180
207
|
},
|
|
181
208
|
};
|
|
182
209
|
}
|
|
183
|
-
/**
|
|
184
|
-
* Project root scoping: in test environments the in-memory DB singleton is
|
|
185
|
-
* shared across tests, so schema_usage entries from previous test cases leak
|
|
186
|
-
* into subsequent queries. Build a file-path LIKE clause scoped to root.
|
|
187
|
-
*/
|
|
188
|
-
resolveFilePathClause(config) {
|
|
189
|
-
const projectRoot = config.projectRoot;
|
|
190
|
-
const resolvedRoot = projectRoot ? path.resolve(projectRoot) : undefined;
|
|
191
|
-
return resolvedRoot
|
|
192
|
-
? { clause: 'AND file_path LIKE ?', param: `${resolvedRoot}%` }
|
|
193
|
-
: undefined;
|
|
194
|
-
}
|
|
195
210
|
/** Run the R1/R3/R4 detectors and collect their violations. */
|
|
196
|
-
runDetectors(indexHandle, config,
|
|
211
|
+
runDetectors(indexHandle, config, scope) {
|
|
197
212
|
const violations = [];
|
|
198
213
|
// R1 — Schema lifecycle detectors
|
|
199
214
|
const lifecycle = config.schemaLifecycle ?? {};
|
|
200
215
|
if (lifecycle.enableWrittenNeverRead !== false) {
|
|
201
|
-
violations.push(...detectWrittenNeverRead(indexHandle,
|
|
216
|
+
violations.push(...detectWrittenNeverRead(indexHandle, scope));
|
|
202
217
|
}
|
|
203
218
|
if (lifecycle.enableReadNeverWritten !== false) {
|
|
204
|
-
violations.push(...detectReadNeverWritten(indexHandle,
|
|
219
|
+
violations.push(...detectReadNeverWritten(indexHandle, scope));
|
|
205
220
|
}
|
|
206
221
|
if (lifecycle.enableTransactionBoundaryRisk !== false) {
|
|
207
222
|
const txnTableMax = lifecycle.txnTableMax ?? 4;
|
|
208
|
-
violations.push(...detectTransactionBoundaryRisk(indexHandle, txnTableMax,
|
|
223
|
+
violations.push(...detectTransactionBoundaryRisk(indexHandle, txnTableMax, scope));
|
|
209
224
|
}
|
|
210
225
|
// R3 — Validation-bypass detection
|
|
211
226
|
const bypass = config.validatorBypass;
|
|
212
227
|
if (bypass) {
|
|
213
|
-
violations.push(...detectValidationBypass(indexHandle, bypass,
|
|
228
|
+
violations.push(...detectValidationBypass(indexHandle, bypass, scope));
|
|
214
229
|
}
|
|
215
230
|
// R4 — Coverage by importance
|
|
216
231
|
const coverage = config.coverage;
|
|
217
232
|
if (coverage) {
|
|
218
|
-
violations.push(...detectUncoveredRisk(indexHandle, coverage,
|
|
233
|
+
violations.push(...detectUncoveredRisk(indexHandle, coverage, scope));
|
|
219
234
|
}
|
|
220
235
|
return violations;
|
|
221
236
|
}
|
|
222
237
|
/** Count distinct files with schema_usage entries. */
|
|
223
|
-
countDistinctFiles(indexHandle,
|
|
238
|
+
countDistinctFiles(indexHandle, scope) {
|
|
239
|
+
const fp = scope.apply('file_path');
|
|
224
240
|
const rows = indexHandle
|
|
225
|
-
.query(
|
|
226
|
-
? `SELECT COUNT(DISTINCT file_path) as cnt FROM schema_usage WHERE 1=1 ${filePathClause.clause}`
|
|
227
|
-
: 'SELECT COUNT(DISTINCT file_path) as cnt FROM schema_usage', (filePathClause ? [filePathClause.param] : []));
|
|
241
|
+
.query(`SELECT COUNT(DISTINCT file_path) as cnt FROM schema_usage WHERE 1=1 ${fp.clause}`, fp.params);
|
|
228
242
|
return rows[0]?.cnt ?? 0;
|
|
229
243
|
}
|
|
230
244
|
/** No-op — all detection is DB-based. */
|
|
@@ -237,18 +251,18 @@ export class CrossDomainAnalyzer extends UniversalAnalyzer {
|
|
|
237
251
|
* Detect tables that are written to (INSERT/UPDATE/DELETE/CREATE) but
|
|
238
252
|
* never read from (SELECT). These might be dead writes or missed read paths.
|
|
239
253
|
*/
|
|
240
|
-
function detectWrittenNeverRead(indexHandle,
|
|
254
|
+
function detectWrittenNeverRead(indexHandle, scope) {
|
|
241
255
|
const violations = [];
|
|
242
|
-
const
|
|
256
|
+
const fp = scope.apply('file_path');
|
|
243
257
|
const rows = indexHandle
|
|
244
258
|
.query(`SELECT DISTINCT table_name, file_path, function_name, line, usage_type
|
|
245
259
|
FROM schema_usage
|
|
246
260
|
WHERE usage_type IN ('insert', 'update', 'delete', 'create')
|
|
247
|
-
${
|
|
261
|
+
${fp.clause}
|
|
248
262
|
AND table_name NOT IN (
|
|
249
|
-
SELECT DISTINCT table_name FROM schema_usage WHERE usage_type = 'select' ${
|
|
263
|
+
SELECT DISTINCT table_name FROM schema_usage WHERE usage_type = 'select' ${fp.clause}
|
|
250
264
|
)
|
|
251
|
-
ORDER BY table_name, file_path`,
|
|
265
|
+
ORDER BY table_name, file_path`, [...fp.params, ...fp.params]);
|
|
252
266
|
// Deduplicate by table_name — one violation per table, anchored to
|
|
253
267
|
// the first writing file encountered.
|
|
254
268
|
const seen = new Set();
|
|
@@ -275,19 +289,19 @@ function detectWrittenNeverRead(indexHandle, filePath) {
|
|
|
275
289
|
* (INSERT/UPDATE/DELETE/CREATE). These may be external/managed tables
|
|
276
290
|
* or indicate missing write coverage.
|
|
277
291
|
*/
|
|
278
|
-
function detectReadNeverWritten(indexHandle,
|
|
292
|
+
function detectReadNeverWritten(indexHandle, scope) {
|
|
279
293
|
const violations = [];
|
|
280
|
-
const
|
|
294
|
+
const fp = scope.apply('file_path');
|
|
281
295
|
const rows = indexHandle
|
|
282
296
|
.query(`SELECT DISTINCT table_name, file_path, function_name, line, usage_type
|
|
283
297
|
FROM schema_usage
|
|
284
298
|
WHERE usage_type = 'select'
|
|
285
|
-
${
|
|
299
|
+
${fp.clause}
|
|
286
300
|
AND table_name NOT IN (
|
|
287
301
|
SELECT DISTINCT table_name FROM schema_usage
|
|
288
|
-
WHERE usage_type IN ('insert', 'update', 'delete', 'create') ${
|
|
302
|
+
WHERE usage_type IN ('insert', 'update', 'delete', 'create') ${fp.clause}
|
|
289
303
|
)
|
|
290
|
-
ORDER BY table_name, file_path`,
|
|
304
|
+
ORDER BY table_name, file_path`, [...fp.params, ...fp.params]);
|
|
291
305
|
const seen = new Set();
|
|
292
306
|
for (const row of rows) {
|
|
293
307
|
if (seen.has(row.table_name))
|
|
@@ -315,18 +329,17 @@ function detectReadNeverWritten(indexHandle, filePath) {
|
|
|
315
329
|
* writing to too many tables in a single logical operation can lead to
|
|
316
330
|
* long-running transactions, lock contention, and partial-failure complexity.
|
|
317
331
|
*/
|
|
318
|
-
function detectTransactionBoundaryRisk(indexHandle, txnTableMax,
|
|
319
|
-
const
|
|
320
|
-
const fpParams = filePath ? [filePath.param] : [];
|
|
332
|
+
function detectTransactionBoundaryRisk(indexHandle, txnTableMax, scope) {
|
|
333
|
+
const fp = scope.apply('su.file_path');
|
|
321
334
|
// Query schema_usage directly (no JOIN on functions) so this detector
|
|
322
335
|
// works whether or not deepSync has populated the functions table.
|
|
323
336
|
const writerRows = indexHandle
|
|
324
337
|
.query(`SELECT su.function_name, su.file_path, su.table_name, MIN(su.line) as line
|
|
325
338
|
FROM schema_usage su
|
|
326
339
|
WHERE su.usage_type IN ('insert', 'update', 'delete', 'create')
|
|
327
|
-
${
|
|
340
|
+
${fp.clause}
|
|
328
341
|
GROUP BY su.function_name, su.file_path, su.table_name
|
|
329
|
-
ORDER BY su.function_name, su.file_path`,
|
|
342
|
+
ORDER BY su.function_name, su.file_path`, fp.params);
|
|
330
343
|
if (writerRows.length === 0)
|
|
331
344
|
return [];
|
|
332
345
|
const funcWrites = groupWriterTables(writerRows);
|
|
@@ -421,21 +434,21 @@ function resolveCallGraphContext(indexHandle) {
|
|
|
421
434
|
* 3. Heuristic fallback: name GLOB 'validate*' OR 'assert*' (when both
|
|
422
435
|
* above are silent)
|
|
423
436
|
*/
|
|
424
|
-
function detectValidationBypass(indexHandle, config,
|
|
437
|
+
function detectValidationBypass(indexHandle, config, scope) {
|
|
425
438
|
const violations = [];
|
|
426
439
|
const { validators: userValidators = [], modeShare = 0.8, minCorpus = 20, depth = 3, } = config;
|
|
427
440
|
const validatorIds = buildValidatorIds(indexHandle, userValidators);
|
|
428
441
|
if (validatorIds.size === 0)
|
|
429
442
|
return violations;
|
|
430
|
-
const
|
|
443
|
+
const fp = scope.apply('su.file_path');
|
|
431
444
|
const writers = indexHandle
|
|
432
445
|
.query(`SELECT DISTINCT su.function_name, su.file_path, su.line, f.id as function_id
|
|
433
446
|
FROM schema_usage su
|
|
434
447
|
JOIN functions f ON f.name = su.function_name
|
|
435
448
|
AND f.file_path = su.file_path
|
|
436
449
|
WHERE su.usage_type IN ('insert', 'update', 'delete', 'create')
|
|
437
|
-
${
|
|
438
|
-
ORDER BY su.file_path, su.function_name`,
|
|
450
|
+
${fp.clause}
|
|
451
|
+
ORDER BY su.file_path, su.function_name`, fp.params);
|
|
439
452
|
if (writers.length === 0)
|
|
440
453
|
return violations;
|
|
441
454
|
const writerCoverage = computeWriterCoverage(writers, validatorIds, indexHandle, depth);
|
|
@@ -586,7 +599,7 @@ function flagUnvalidatedWriters(dirWriters, minCorpus, modeShare, depth) {
|
|
|
586
599
|
* to static reach analysis from test files (BFS from test-file functions
|
|
587
600
|
* into the call graph).
|
|
588
601
|
*/
|
|
589
|
-
function detectUncoveredRisk(indexHandle, coverage,
|
|
602
|
+
function detectUncoveredRisk(indexHandle, coverage, scope) {
|
|
590
603
|
const topRiskDecile = coverage.topRiskDecile ?? 0.1;
|
|
591
604
|
// Check if any measured coverage exists
|
|
592
605
|
const measuredCount = indexHandle
|
|
@@ -594,7 +607,7 @@ function detectUncoveredRisk(indexHandle, coverage, filePath) {
|
|
|
594
607
|
if (measuredCount > 0) {
|
|
595
608
|
return detectMeasuredUncovered(indexHandle, topRiskDecile);
|
|
596
609
|
}
|
|
597
|
-
return detectStaticReachUncovered(indexHandle, coverage,
|
|
610
|
+
return detectStaticReachUncovered(indexHandle, coverage, scope);
|
|
598
611
|
}
|
|
599
612
|
/**
|
|
600
613
|
* Flag exported high-risk functions with no measured test coverage, using
|
|
@@ -642,20 +655,19 @@ function detectMeasuredUncovered(indexHandle, topRiskDecile) {
|
|
|
642
655
|
* Static-reach fallback: flag exported high-risk functions that are not
|
|
643
656
|
* reachable from known test files via BFS through the call graph.
|
|
644
657
|
*/
|
|
645
|
-
function detectStaticReachUncovered(indexHandle, coverage,
|
|
658
|
+
function detectStaticReachUncovered(indexHandle, coverage, scope) {
|
|
646
659
|
const topRiskDecile = coverage.topRiskDecile ?? 0.1;
|
|
647
|
-
const highRiskFns = queryHighRiskFunctions(indexHandle, topRiskDecile,
|
|
660
|
+
const highRiskFns = queryHighRiskFunctions(indexHandle, topRiskDecile, scope);
|
|
648
661
|
if (highRiskFns.length === 0)
|
|
649
662
|
return [];
|
|
650
663
|
const reachableIds = computeTestReachableIds(indexHandle, coverage);
|
|
651
664
|
return flagUnreachedHighRisk(highRiskFns, reachableIds);
|
|
652
665
|
}
|
|
653
666
|
/** Rank exported functions by hotspot score and take the top decile. */
|
|
654
|
-
function queryHighRiskFunctions(indexHandle, topRiskDecile,
|
|
655
|
-
const
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
params.push(filePath.param);
|
|
667
|
+
function queryHighRiskFunctions(indexHandle, topRiskDecile, scope) {
|
|
668
|
+
const fp = scope.apply('f.file_path');
|
|
669
|
+
// Param order matters: the CTE's `f.file_path` scope binds first (it appears
|
|
670
|
+
// first in the SQL text), then the outer `pct <= ?` binds topRiskDecile.
|
|
659
671
|
return indexHandle.query(`WITH ranked AS (
|
|
660
672
|
SELECT
|
|
661
673
|
f.name,
|
|
@@ -668,12 +680,12 @@ function queryHighRiskFunctions(indexHandle, topRiskDecile, filePath) {
|
|
|
668
680
|
LEFT JOIN hotspot_scores hs ON hs.target = (f.file_path || ':' || f.name)
|
|
669
681
|
AND hs.type = 'function'
|
|
670
682
|
WHERE f.is_exported = 1
|
|
671
|
-
${
|
|
683
|
+
${fp.clause}
|
|
672
684
|
)
|
|
673
685
|
SELECT id, name, file_path, line_number, risk_score
|
|
674
686
|
FROM ranked
|
|
675
687
|
WHERE pct <= ?
|
|
676
|
-
ORDER BY risk_score DESC`, params);
|
|
688
|
+
ORDER BY risk_score DESC`, [...fp.params, topRiskDecile]);
|
|
677
689
|
}
|
|
678
690
|
/** Flag high-risk functions not in the reachable set. */
|
|
679
691
|
function flagUnreachedHighRisk(highRiskFns, reachableIds) {
|