circle-ir 3.88.1 → 3.90.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/dist/analysis/findings-instrumentation.d.ts +45 -0
- package/dist/analysis/findings-instrumentation.d.ts.map +1 -0
- package/dist/analysis/findings-instrumentation.js +111 -0
- package/dist/analysis/findings-instrumentation.js.map +1 -0
- package/dist/analysis/index.d.ts +1 -0
- package/dist/analysis/index.d.ts.map +1 -1
- package/dist/analysis/index.js +1 -0
- package/dist/analysis/index.js.map +1 -1
- package/dist/analysis/passes/cross-file-pass.d.ts +18 -1
- package/dist/analysis/passes/cross-file-pass.d.ts.map +1 -1
- package/dist/analysis/passes/cross-file-pass.js +74 -7
- package/dist/analysis/passes/cross-file-pass.js.map +1 -1
- package/dist/analyzer.d.ts +16 -0
- package/dist/analyzer.d.ts.map +1 -1
- package/dist/analyzer.js +12 -2
- package/dist/analyzer.js.map +1 -1
- package/dist/browser/circle-ir.js +60 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/resolution/cross-file.d.ts +42 -1
- package/dist/resolution/cross-file.d.ts.map +1 -1
- package/dist/resolution/cross-file.js +101 -20
- package/dist/resolution/cross-file.js.map +1 -1
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/logger.d.ts +9 -2
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +11 -4
- package/dist/utils/logger.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Findings instrumentation hook (cognium-dev #145, re-scoped per
|
|
3
|
+
* cognium-ai feedback).
|
|
4
|
+
*
|
|
5
|
+
* Opt-in, off by default. When enabled via `setFindingsInstrumentation(true)`,
|
|
6
|
+
* the per-file analyzer emits one `[finding]` JSON line on stderr for every
|
|
7
|
+
* `SastFinding` produced by the pipeline, plus one `[findings-summary]` line
|
|
8
|
+
* per file with aggregate counts. The payload carries the fields required to
|
|
9
|
+
* re-derive coalesce candidates after the fact (#143):
|
|
10
|
+
* `rule_id`, `file`, `line`, `pass`, `category`, `severity`, `cwe`,
|
|
11
|
+
* `sink_type`, `source_type`, `confidence`, `dedup_group_id`.
|
|
12
|
+
*
|
|
13
|
+
* Browser-safe: no Node-only APIs. `console.error` is universal and bypasses
|
|
14
|
+
* the logger DI by design so the output stays grep-friendly regardless of
|
|
15
|
+
* log level.
|
|
16
|
+
*
|
|
17
|
+
* Read-only contract: this module never mutates the findings array or any
|
|
18
|
+
* other pipeline output. Disabling the flag fully no-ops the emission.
|
|
19
|
+
*/
|
|
20
|
+
import type { SastFinding, TaintSource, TaintSink } from '../types/index.js';
|
|
21
|
+
/**
|
|
22
|
+
* Toggle the per-file findings instrumentation on or off. Off by default.
|
|
23
|
+
*
|
|
24
|
+
* The CLI wires this to the `CIRCLE_IR_INSTRUMENT_FINDINGS=1` environment
|
|
25
|
+
* variable; library consumers can call it directly.
|
|
26
|
+
*/
|
|
27
|
+
export declare function setFindingsInstrumentation(enabled: boolean): void;
|
|
28
|
+
/**
|
|
29
|
+
* Current state of the instrumentation flag. Exposed for tests and for
|
|
30
|
+
* consumers that want to gate their own diagnostics off the same switch.
|
|
31
|
+
*/
|
|
32
|
+
export declare function isFindingsInstrumentationEnabled(): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Emit one stderr line per `SastFinding` plus one summary line for the file.
|
|
35
|
+
* Cheap no-op when the flag is off.
|
|
36
|
+
*
|
|
37
|
+
* Called by `analyze()` once per file, right after the pipeline has
|
|
38
|
+
* accumulated all findings and right before the per-file result object is
|
|
39
|
+
* assembled. See `src/analyzer.ts`.
|
|
40
|
+
*/
|
|
41
|
+
export declare function emitFindingsInstrumentation(filePath: string, findings: readonly SastFinding[], taint: {
|
|
42
|
+
sources: readonly TaintSource[];
|
|
43
|
+
sinks: readonly TaintSink[];
|
|
44
|
+
}): void;
|
|
45
|
+
//# sourceMappingURL=findings-instrumentation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findings-instrumentation.d.ts","sourceRoot":"","sources":["../../src/analysis/findings-instrumentation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAI7E;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAEjE;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,IAAI,OAAO,CAE1D;AAWD;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,SAAS,WAAW,EAAE,EAChC,KAAK,EAAE;IAAE,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IAAC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAA;CAAE,GACtE,IAAI,CA2DN"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Findings instrumentation hook (cognium-dev #145, re-scoped per
|
|
3
|
+
* cognium-ai feedback).
|
|
4
|
+
*
|
|
5
|
+
* Opt-in, off by default. When enabled via `setFindingsInstrumentation(true)`,
|
|
6
|
+
* the per-file analyzer emits one `[finding]` JSON line on stderr for every
|
|
7
|
+
* `SastFinding` produced by the pipeline, plus one `[findings-summary]` line
|
|
8
|
+
* per file with aggregate counts. The payload carries the fields required to
|
|
9
|
+
* re-derive coalesce candidates after the fact (#143):
|
|
10
|
+
* `rule_id`, `file`, `line`, `pass`, `category`, `severity`, `cwe`,
|
|
11
|
+
* `sink_type`, `source_type`, `confidence`, `dedup_group_id`.
|
|
12
|
+
*
|
|
13
|
+
* Browser-safe: no Node-only APIs. `console.error` is universal and bypasses
|
|
14
|
+
* the logger DI by design so the output stays grep-friendly regardless of
|
|
15
|
+
* log level.
|
|
16
|
+
*
|
|
17
|
+
* Read-only contract: this module never mutates the findings array or any
|
|
18
|
+
* other pipeline output. Disabling the flag fully no-ops the emission.
|
|
19
|
+
*/
|
|
20
|
+
let instrumentEnabled = false;
|
|
21
|
+
/**
|
|
22
|
+
* Toggle the per-file findings instrumentation on or off. Off by default.
|
|
23
|
+
*
|
|
24
|
+
* The CLI wires this to the `CIRCLE_IR_INSTRUMENT_FINDINGS=1` environment
|
|
25
|
+
* variable; library consumers can call it directly.
|
|
26
|
+
*/
|
|
27
|
+
export function setFindingsInstrumentation(enabled) {
|
|
28
|
+
instrumentEnabled = enabled;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Current state of the instrumentation flag. Exposed for tests and for
|
|
32
|
+
* consumers that want to gate their own diagnostics off the same switch.
|
|
33
|
+
*/
|
|
34
|
+
export function isFindingsInstrumentationEnabled() {
|
|
35
|
+
return instrumentEnabled;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Build a `${file}:${line}:${rule_id}` key for a finding. Matches the dedup
|
|
39
|
+
* convention used elsewhere in the codebase (e.g. ScanSecretsPass) so
|
|
40
|
+
* downstream analysis can group candidates without a second pass.
|
|
41
|
+
*/
|
|
42
|
+
function dedupGroupId(f) {
|
|
43
|
+
return `${f.file}:${f.line}:${f.rule_id}`;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Emit one stderr line per `SastFinding` plus one summary line for the file.
|
|
47
|
+
* Cheap no-op when the flag is off.
|
|
48
|
+
*
|
|
49
|
+
* Called by `analyze()` once per file, right after the pipeline has
|
|
50
|
+
* accumulated all findings and right before the per-file result object is
|
|
51
|
+
* assembled. See `src/analyzer.ts`.
|
|
52
|
+
*/
|
|
53
|
+
export function emitFindingsInstrumentation(filePath, findings, taint) {
|
|
54
|
+
if (!instrumentEnabled)
|
|
55
|
+
return;
|
|
56
|
+
// Pre-index sinks/sources by line for O(1) lookup. Many findings per file,
|
|
57
|
+
// many sinks per file; nested .find() would be O(F*S) per file.
|
|
58
|
+
const sinkByLine = new Map();
|
|
59
|
+
for (const s of taint.sinks) {
|
|
60
|
+
// First sink at a line wins; matches finding's primary "go-to-line".
|
|
61
|
+
if (!sinkByLine.has(s.line))
|
|
62
|
+
sinkByLine.set(s.line, s);
|
|
63
|
+
}
|
|
64
|
+
const sourceByLine = new Map();
|
|
65
|
+
for (const s of taint.sources) {
|
|
66
|
+
if (!sourceByLine.has(s.line))
|
|
67
|
+
sourceByLine.set(s.line, s);
|
|
68
|
+
}
|
|
69
|
+
const groupCounts = new Map();
|
|
70
|
+
const byRule = new Map();
|
|
71
|
+
const bySeverity = new Map();
|
|
72
|
+
for (const f of findings) {
|
|
73
|
+
const gid = dedupGroupId(f);
|
|
74
|
+
groupCounts.set(gid, (groupCounts.get(gid) ?? 0) + 1);
|
|
75
|
+
byRule.set(f.rule_id, (byRule.get(f.rule_id) ?? 0) + 1);
|
|
76
|
+
bySeverity.set(f.severity, (bySeverity.get(f.severity) ?? 0) + 1);
|
|
77
|
+
const sink = sinkByLine.get(f.line);
|
|
78
|
+
const source = sink ? undefined : sourceByLine.get(f.line);
|
|
79
|
+
const payload = {
|
|
80
|
+
file: f.file,
|
|
81
|
+
line: f.line,
|
|
82
|
+
rule_id: f.rule_id,
|
|
83
|
+
pass: f.pass,
|
|
84
|
+
category: f.category,
|
|
85
|
+
severity: f.severity,
|
|
86
|
+
cwe: f.cwe,
|
|
87
|
+
sink_type: sink?.type,
|
|
88
|
+
source_type: source?.type,
|
|
89
|
+
confidence: sink?.confidence,
|
|
90
|
+
dedup_group_id: gid,
|
|
91
|
+
};
|
|
92
|
+
console.error(`[finding] ${JSON.stringify(payload)}`);
|
|
93
|
+
}
|
|
94
|
+
let maxPerGroup = 0;
|
|
95
|
+
for (const c of groupCounts.values()) {
|
|
96
|
+
if (c > maxPerGroup)
|
|
97
|
+
maxPerGroup = c;
|
|
98
|
+
}
|
|
99
|
+
const summary = {
|
|
100
|
+
file: filePath,
|
|
101
|
+
total: findings.length,
|
|
102
|
+
unique_groups: groupCounts.size,
|
|
103
|
+
max_findings_per_group: maxPerGroup,
|
|
104
|
+
sources_count: taint.sources.length,
|
|
105
|
+
sinks_count: taint.sinks.length,
|
|
106
|
+
by_rule: Object.fromEntries(byRule),
|
|
107
|
+
by_severity: Object.fromEntries(bySeverity),
|
|
108
|
+
};
|
|
109
|
+
console.error(`[findings-summary] ${JSON.stringify(summary)}`);
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=findings-instrumentation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findings-instrumentation.js","sourceRoot":"","sources":["../../src/analysis/findings-instrumentation.ts"],"names":[],"mappings":"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"}
|
package/dist/analysis/index.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export { parseConfig, loadSourceConfigs, loadSinkConfigs, createTaintConfig, get
|
|
|
5
5
|
export { analyzeTaint, attachSourceLineCode, } from './taint-matcher.js';
|
|
6
6
|
export { detectUnresolved, } from './unresolved.js';
|
|
7
7
|
export { generateFindings, } from './findings.js';
|
|
8
|
+
export { setFindingsInstrumentation, isFindingsInstrumentationEnabled, emitFindingsInstrumentation, } from './findings-instrumentation.js';
|
|
8
9
|
export { propagateTaint, type TaintPropagationResult, type TaintedVariable, type TaintFlow, } from './taint-propagation.js';
|
|
9
10
|
export { analyzeInterprocedural, getInterproceduralSummary, findTaintBridges, getMethodTaintPaths, hasMethod, getMethod, isMethodTainted, type InterproceduralResult, type MethodNode, type CallEdge, } from './interprocedural.js';
|
|
10
11
|
export { analyzeConstantPropagation, isFalsePositive, isCorrelatedPredicateFP, ConstantPropagator, isKnown, createUnknown, createConstant, getNodeText, getNodeLine, type ConstantValue, type ConstantType, type ConstantPropagatorResult, type ConstantPropagationOptions, } from './constant-propagation.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/analysis/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,YAAY,EACZ,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,cAAc,EACd,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EACpB,KAAK,SAAS,GACf,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,gBAAgB,EAChB,mBAAmB,EACnB,SAAS,EACT,SAAS,EACT,eAAe,EACf,KAAK,qBAAqB,EAC1B,KAAK,UAAU,EACf,KAAK,QAAQ,GACd,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,0BAA0B,EAC1B,eAAe,EACf,uBAAuB,EACvB,kBAAkB,EAClB,OAAO,EACP,aAAa,EACb,cAAc,EACd,WAAW,EACX,WAAW,EACX,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,wBAAwB,EAC7B,KAAK,0BAA0B,GAChC,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,UAAU,EACV,cAAc,EACd,eAAe,EACf,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,GACtB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,WAAW,EACX,eAAe,EACf,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACpB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,YAAY,EACZ,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/analysis/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,YAAY,EACZ,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,0BAA0B,EAC1B,gCAAgC,EAChC,2BAA2B,GAC5B,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,cAAc,EACd,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EACpB,KAAK,SAAS,GACf,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,gBAAgB,EAChB,mBAAmB,EACnB,SAAS,EACT,SAAS,EACT,eAAe,EACf,KAAK,qBAAqB,EAC1B,KAAK,UAAU,EACf,KAAK,QAAQ,GACd,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,0BAA0B,EAC1B,eAAe,EACf,uBAAuB,EACvB,kBAAkB,EAClB,OAAO,EACP,aAAa,EACb,cAAc,EACd,WAAW,EACX,WAAW,EACX,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,wBAAwB,EAC7B,KAAK,0BAA0B,GAChC,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,UAAU,EACV,cAAc,EACd,eAAe,EACf,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,GACtB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,WAAW,EACX,eAAe,EACf,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACpB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,YAAY,EACZ,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC"}
|
package/dist/analysis/index.js
CHANGED
|
@@ -5,6 +5,7 @@ export { parseConfig, loadSourceConfigs, loadSinkConfigs, createTaintConfig, get
|
|
|
5
5
|
export { analyzeTaint, attachSourceLineCode, } from './taint-matcher.js';
|
|
6
6
|
export { detectUnresolved, } from './unresolved.js';
|
|
7
7
|
export { generateFindings, } from './findings.js';
|
|
8
|
+
export { setFindingsInstrumentation, isFindingsInstrumentationEnabled, emitFindingsInstrumentation, } from './findings-instrumentation.js';
|
|
8
9
|
export { propagateTaint, } from './taint-propagation.js';
|
|
9
10
|
export { analyzeInterprocedural, getInterproceduralSummary, findTaintBridges, getMethodTaintPaths, hasMethod, getMethod, isMethodTainted, } from './interprocedural.js';
|
|
10
11
|
export { analyzeConstantPropagation, isFalsePositive, isCorrelatedPredicateFP, ConstantPropagator, isKnown, createUnknown, createConstant, getNodeText, getNodeLine, } from './constant-propagation.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/analysis/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,YAAY,EACZ,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,cAAc,GAIf,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,gBAAgB,EAChB,mBAAmB,EACnB,SAAS,EACT,SAAS,EACT,eAAe,GAIhB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,0BAA0B,EAC1B,eAAe,EACf,uBAAuB,EACvB,kBAAkB,EAClB,OAAO,EACP,aAAa,EACb,cAAc,EACd,WAAW,EACX,WAAW,GAKZ,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,UAAU,EACV,cAAc,EACd,eAAe,GAKhB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,WAAW,EACX,eAAe,GAKhB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,YAAY,EACZ,eAAe,EACf,eAAe,EACf,mBAAmB,GAEpB,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/analysis/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,YAAY,EACZ,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,0BAA0B,EAC1B,gCAAgC,EAChC,2BAA2B,GAC5B,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,cAAc,GAIf,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,gBAAgB,EAChB,mBAAmB,EACnB,SAAS,EACT,SAAS,EACT,eAAe,GAIhB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,0BAA0B,EAC1B,eAAe,EACf,uBAAuB,EACvB,kBAAkB,EAClB,OAAO,EACP,aAAa,EACb,cAAc,EACd,WAAW,EACX,WAAW,GAKZ,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,UAAU,EACV,cAAc,EACd,eAAe,GAKhB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,WAAW,EACX,eAAe,GAKhB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,YAAY,EACZ,eAAe,EACf,eAAe,EACf,mBAAmB,GAEpB,MAAM,aAAa,CAAC"}
|
|
@@ -19,10 +19,27 @@ export interface CrossFilePassResult {
|
|
|
19
19
|
taintPaths: TaintPath[];
|
|
20
20
|
/** Type hierarchy across all files. */
|
|
21
21
|
typeHierarchy: TypeHierarchy;
|
|
22
|
+
/**
|
|
23
|
+
* Set when the cross-file budget (`options.budgetMs`) was exceeded
|
|
24
|
+
* mid-phase. When `true`, `taintPaths` may be incomplete — remaining
|
|
25
|
+
* sub-phases were skipped. Added in 3.89.0 (#141).
|
|
26
|
+
*/
|
|
27
|
+
budgetExceeded?: boolean;
|
|
28
|
+
}
|
|
29
|
+
export interface CrossFilePassOptions {
|
|
30
|
+
/**
|
|
31
|
+
* Wall-time budget (ms) for the entire cross-file phase. `0` or `undefined`
|
|
32
|
+
* disables the breaker (unlimited). On exceed, partial `taintPaths` are
|
|
33
|
+
* kept, the remaining sub-phases are skipped, and `budgetExceeded` is set.
|
|
34
|
+
*
|
|
35
|
+
* Threaded from `AnalyzerOptions.crossFileBudgetMs` (default 300_000ms /
|
|
36
|
+
* 5 min) in 3.89.0 to mitigate #141 (langchain4j hang).
|
|
37
|
+
*/
|
|
38
|
+
budgetMs?: number;
|
|
22
39
|
}
|
|
23
40
|
export declare class CrossFilePass {
|
|
24
41
|
run(projectGraph: ProjectGraph,
|
|
25
42
|
/** Raw source lines per file (used to populate `code` fields in paths). */
|
|
26
|
-
sourceLines: Map<string, string[]
|
|
43
|
+
sourceLines: Map<string, string[]>, options?: CrossFilePassOptions): CrossFilePassResult;
|
|
27
44
|
}
|
|
28
45
|
//# sourceMappingURL=cross-file-pass.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cross-file-pass.d.ts","sourceRoot":"","sources":["../../../src/analysis/passes/cross-file-pass.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,aAAa,EAKd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"cross-file-pass.d.ts","sourceRoot":"","sources":["../../../src/analysis/passes/cross-file-pass.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,aAAa,EAKd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAIjE,MAAM,WAAW,mBAAmB;IAClC,2DAA2D;IAC3D,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,8CAA8C;IAC9C,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,uCAAuC;IACvC,aAAa,EAAE,aAAa,CAAC;IAC7B;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,aAAa;IACxB,GAAG,CACD,YAAY,EAAE,YAAY;IAC1B,2EAA2E;IAC3E,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAClC,OAAO,GAAE,oBAAyB,GACjC,mBAAmB;CAuOvB"}
|
|
@@ -10,13 +10,25 @@
|
|
|
10
10
|
*
|
|
11
11
|
* Depends on: ProjectGraph (with all files registered)
|
|
12
12
|
*/
|
|
13
|
+
import { logger } from '../../utils/logger.js';
|
|
13
14
|
export class CrossFilePass {
|
|
14
15
|
run(projectGraph,
|
|
15
16
|
/** Raw source lines per file (used to populate `code` fields in paths). */
|
|
16
|
-
sourceLines) {
|
|
17
|
+
sourceLines, options = {}) {
|
|
17
18
|
const resolver = projectGraph.resolver;
|
|
19
|
+
const budgetMs = options.budgetMs ?? 0;
|
|
20
|
+
const startMs = Date.now();
|
|
21
|
+
const budgetExceeded = () => budgetMs > 0 && Date.now() - startMs > budgetMs;
|
|
22
|
+
const fileCount = projectGraph.filePaths.length;
|
|
23
|
+
logger.info('cross-file: starting', { files: fileCount, budgetMs });
|
|
18
24
|
// --- 1. Cross-file taint flows → TaintPath[] ----------------------------
|
|
25
|
+
const phase1Start = Date.now();
|
|
26
|
+
logger.debug('cross-file: phase 1/4 starting (findCrossFileTaintFlows)');
|
|
19
27
|
const flows = resolver.findCrossFileTaintFlows();
|
|
28
|
+
logger.info('cross-file: phase 1/4 done', {
|
|
29
|
+
flows: flows.length,
|
|
30
|
+
elapsedMs: Date.now() - phase1Start,
|
|
31
|
+
});
|
|
20
32
|
const taintPaths = flows.flatMap((flow, idx) => {
|
|
21
33
|
const srcLines = sourceLines.get(flow.sourceFile) ?? [];
|
|
22
34
|
const tgtLines = sourceLines.get(flow.targetFile) ?? [];
|
|
@@ -76,11 +88,57 @@ export class CrossFilePass {
|
|
|
76
88
|
// class writes `this.field = param` in a `@DataBoundConstructor` and
|
|
77
89
|
// another class reads that field on an aliased instance and forwards to
|
|
78
90
|
// a sink.
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
91
|
+
//
|
|
92
|
+
// Phases 2-4 are individually budget-gated so a pathological 3rd phase
|
|
93
|
+
// (e.g. quadratic aliasing on a large Java monorepo) cannot block
|
|
94
|
+
// delivery of phase-1/2 taint paths. See #141 / 3.89.0 CHANGELOG.
|
|
95
|
+
let exceeded = false;
|
|
96
|
+
const ipPaths = [];
|
|
97
|
+
if (budgetExceeded()) {
|
|
98
|
+
exceeded = true;
|
|
99
|
+
logger.warn('cross-file: budget exceeded after phase 1/4, skipping phases 2-4', {
|
|
100
|
+
budgetMs, elapsedMs: Date.now() - startMs, partialPaths: taintPaths.length,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
const phase2Start = Date.now();
|
|
105
|
+
logger.debug('cross-file: phase 2/4 starting (findInterproceduralTaintPaths)');
|
|
106
|
+
const phase2 = resolver.findInterproceduralTaintPaths();
|
|
107
|
+
ipPaths.push(...phase2);
|
|
108
|
+
logger.info('cross-file: phase 2/4 done', {
|
|
109
|
+
paths: phase2.length, elapsedMs: Date.now() - phase2Start,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
if (!exceeded && budgetExceeded()) {
|
|
113
|
+
exceeded = true;
|
|
114
|
+
logger.warn('cross-file: budget exceeded after phase 2/4, skipping phases 3-4', {
|
|
115
|
+
budgetMs, elapsedMs: Date.now() - startMs, partialPaths: taintPaths.length + ipPaths.length,
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
else if (!exceeded) {
|
|
119
|
+
const phase3Start = Date.now();
|
|
120
|
+
logger.debug('cross-file: phase 3/4 starting (findFieldBindingTaintPaths)');
|
|
121
|
+
const phase3 = resolver.findFieldBindingTaintPaths();
|
|
122
|
+
ipPaths.push(...phase3);
|
|
123
|
+
logger.info('cross-file: phase 3/4 done', {
|
|
124
|
+
paths: phase3.length, elapsedMs: Date.now() - phase3Start,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
if (!exceeded && budgetExceeded()) {
|
|
128
|
+
exceeded = true;
|
|
129
|
+
logger.warn('cross-file: budget exceeded after phase 3/4, skipping phase 4', {
|
|
130
|
+
budgetMs, elapsedMs: Date.now() - startMs, partialPaths: taintPaths.length + ipPaths.length,
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
else if (!exceeded) {
|
|
134
|
+
const phase4Start = Date.now();
|
|
135
|
+
logger.debug('cross-file: phase 4/4 starting (findCrossInstanceAliasingPaths)');
|
|
136
|
+
const phase4 = findCrossInstanceAliasingPaths(projectGraph, sourceLines);
|
|
137
|
+
ipPaths.push(...phase4);
|
|
138
|
+
logger.info('cross-file: phase 4/4 done', {
|
|
139
|
+
paths: phase4.length, elapsedMs: Date.now() - phase4Start,
|
|
140
|
+
});
|
|
141
|
+
}
|
|
84
142
|
for (let i = 0; i < ipPaths.length; i++) {
|
|
85
143
|
const p = ipPaths[i];
|
|
86
144
|
const sinkIR = projectGraph.getIR(p.sink.file);
|
|
@@ -165,7 +223,16 @@ export class CrossFilePass {
|
|
|
165
223
|
}
|
|
166
224
|
// --- 3. Type hierarchy --------------------------------------------------
|
|
167
225
|
const typeHierarchy = projectGraph.typeHierarchy.toTypeHierarchyData();
|
|
168
|
-
|
|
226
|
+
logger.info('cross-file: complete', {
|
|
227
|
+
totalMs: Date.now() - startMs,
|
|
228
|
+
paths: taintPaths.length,
|
|
229
|
+
crossFileCalls: crossFileCalls.length,
|
|
230
|
+
budgetExceeded: exceeded,
|
|
231
|
+
});
|
|
232
|
+
const result = { crossFileCalls, taintPaths, typeHierarchy };
|
|
233
|
+
if (exceeded)
|
|
234
|
+
result.budgetExceeded = true;
|
|
235
|
+
return result;
|
|
169
236
|
}
|
|
170
237
|
}
|
|
171
238
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cross-file-pass.js","sourceRoot":"","sources":["../../../src/analysis/passes/cross-file-pass.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cross-file-pass.js","sourceRoot":"","sources":["../../../src/analysis/passes/cross-file-pass.ts"],"names":[],"mappings":"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"}
|
package/dist/analyzer.d.ts
CHANGED
|
@@ -91,6 +91,22 @@ export interface AnalyzerOptions {
|
|
|
91
91
|
* Passes to disable entirely. Use pass names (e.g., 'naming-convention').
|
|
92
92
|
*/
|
|
93
93
|
disabledPasses?: string[];
|
|
94
|
+
/**
|
|
95
|
+
* Wall-time budget (ms) for the entire cross-file phase
|
|
96
|
+
* (`CrossFilePass.run()` — direct flows, interprocedural, field-binding,
|
|
97
|
+
* cross-instance aliasing). When exceeded, the remaining sub-phases are
|
|
98
|
+
* skipped, any taint paths produced so far are kept, and the resulting
|
|
99
|
+
* `ProjectAnalysis.cross_file_budget_exceeded` flag is set to `true`.
|
|
100
|
+
*
|
|
101
|
+
* - `0` disables the breaker (unlimited).
|
|
102
|
+
* - Omitting the field uses the default of `300_000` (5 minutes), chosen
|
|
103
|
+
* to comfortably cover large monorepos (~2K files) at post-3.89.0
|
|
104
|
+
* pre-index speeds while still catching pathological hangs.
|
|
105
|
+
* - Consumers operating in CI on >5K-file projects may want to bump this.
|
|
106
|
+
*
|
|
107
|
+
* Added in circle-ir 3.89.0 to mitigate #141 (langchain4j 30-min hang).
|
|
108
|
+
*/
|
|
109
|
+
crossFileBudgetMs?: number;
|
|
94
110
|
}
|
|
95
111
|
/**
|
|
96
112
|
* Per-pass configuration options.
|
package/dist/analyzer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAA2B,eAAe,EAAe,MAAM,kBAAkB,CAAC;AAC1H,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAcL,KAAK,iBAAiB,EACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAKL,eAAe,EAChB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAA2B,eAAe,EAAe,MAAM,kBAAkB,CAAC;AAC1H,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAcL,KAAK,iBAAiB,EACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAKL,eAAe,EAChB,MAAM,qBAAqB,CAAC;AAiC7B,OAAO,EAAwB,KAAK,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AAKlH,OAAO,EAA2B,KAAK,0BAA0B,EAAE,MAAM,gDAAgD,CAAC;AAe1H,OAAO,EAAwB,KAAK,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AACjH,OAAO,EAAuB,KAAK,sBAAsB,EAA6B,MAAM,4CAA4C,CAAC;AAwCzI,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,UAAU,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC;IAEhC;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC;IAE3D;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IAEzE;;OAEG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B;;OAEG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAE1B;;;;;;;;;;;;;;OAcG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,8CAA8C;IAC9C,gBAAgB,CAAC,EAAE,uBAAuB,CAAC;IAC3C,8CAA8C;IAC9C,gBAAgB,CAAC,EAAE,uBAAuB,CAAC;IAC3C,iDAAiD;IACjD,mBAAmB,CAAC,EAAE,0BAA0B,CAAC;IACjD,6CAA6C;IAC7C,eAAe,CAAC,EAAE,sBAAsB,CAAC;CAC1C;AAID;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAc/E;AAkID;;GAEG;AACH,wBAAsB,OAAO,CAC3B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,QAAQ,CAAC,CA+LnB;AA4GD;;GAEG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CAwG3B;AAkID;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAEpC;AAMD;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,iBAAiB,CAAA;CAAE,CAAC,EAC7E,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,eAAe,CAAC,CA6E1B;AAsBD,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
package/dist/analyzer.js
CHANGED
|
@@ -54,6 +54,7 @@
|
|
|
54
54
|
*/
|
|
55
55
|
import { initParser, parse, disposeTree, extractParseStatus, extractMeta, extractTypes, extractCalls, extractImports, extractExports, buildCFG, buildDFG, extractRuntimeRegistrations, collectAllNodes, } from './core/index.js';
|
|
56
56
|
import { analyzeTaint, getDefaultConfig, detectUnresolved, analyzeConstantPropagation, isFalsePositive, } from './analysis/index.js';
|
|
57
|
+
import { emitFindingsInstrumentation } from './analysis/findings-instrumentation.js';
|
|
57
58
|
import { registerBuiltinPlugins } from './languages/index.js';
|
|
58
59
|
import { logger } from './utils/logger.js';
|
|
59
60
|
import { CodeGraph, AnalysisPipeline, ProjectGraph } from './graph/index.js';
|
|
@@ -471,6 +472,9 @@ export async function analyze(code, filePath, language, options = {}) {
|
|
|
471
472
|
flows: taint.flows?.length ?? 0,
|
|
472
473
|
unresolvedItems: unresolved.length,
|
|
473
474
|
});
|
|
475
|
+
// #145 PR B — opt-in per-file findings instrumentation. No-op unless
|
|
476
|
+
// toggled via setFindingsInstrumentation(true). Strictly read-only.
|
|
477
|
+
emitFindingsInstrumentation(filePath, findings, taint);
|
|
474
478
|
return {
|
|
475
479
|
meta, types, calls, cfg, dfg, taint, imports, exports, unresolved, enriched,
|
|
476
480
|
findings: findings.length > 0 ? findings : undefined,
|
|
@@ -804,7 +808,9 @@ export async function analyzeProject(files, options = {}) {
|
|
|
804
808
|
sourceLinesByFile.set(filePath, code.split('\n'));
|
|
805
809
|
}
|
|
806
810
|
// 2. Cross-file analysis
|
|
807
|
-
|
|
811
|
+
// Apply default budget of 300s if not specified by caller. `0` disables.
|
|
812
|
+
const crossFileBudgetMs = options.crossFileBudgetMs ?? 300_000;
|
|
813
|
+
const crossFileResult = new CrossFilePass().run(projectGraph, sourceLinesByFile, { budgetMs: crossFileBudgetMs });
|
|
808
814
|
// 2.5 Cross-file security-header inheritance (CORS via virtual methods)
|
|
809
815
|
const disabledPasses = options.disabledPasses ?? [];
|
|
810
816
|
if (!disabledPasses.includes('security-headers')) {
|
|
@@ -842,7 +848,7 @@ export async function analyzeProject(files, options = {}) {
|
|
|
842
848
|
total_loc: totalLoc,
|
|
843
849
|
analyzed_at: new Date().toISOString(),
|
|
844
850
|
};
|
|
845
|
-
|
|
851
|
+
const projectAnalysis = {
|
|
846
852
|
meta,
|
|
847
853
|
files: fileAnalyses,
|
|
848
854
|
type_hierarchy: crossFileResult.typeHierarchy,
|
|
@@ -850,6 +856,10 @@ export async function analyzeProject(files, options = {}) {
|
|
|
850
856
|
taint_paths: crossFileResult.taintPaths,
|
|
851
857
|
findings: [],
|
|
852
858
|
};
|
|
859
|
+
if (crossFileResult.budgetExceeded) {
|
|
860
|
+
projectAnalysis.cross_file_budget_exceeded = true;
|
|
861
|
+
}
|
|
862
|
+
return projectAnalysis;
|
|
853
863
|
}
|
|
854
864
|
/** Derive a project name from the common root directory of the file paths. */
|
|
855
865
|
function deriveProjectName(paths) {
|