circle-ir 3.8.4 → 3.9.7
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/README.md +82 -5
- package/dist/analysis/dfg-verifier.d.ts +3 -14
- package/dist/analysis/dfg-verifier.js +43 -74
- package/dist/analysis/dfg-verifier.js.map +1 -1
- package/dist/analysis/interprocedural.d.ts +5 -1
- package/dist/analysis/interprocedural.js +62 -60
- package/dist/analysis/interprocedural.js.map +1 -1
- package/dist/analysis/metrics/index.d.ts +2 -0
- package/dist/analysis/metrics/index.js +2 -0
- package/dist/analysis/metrics/index.js.map +1 -0
- package/dist/analysis/metrics/metric-pass.d.ts +27 -0
- package/dist/analysis/metrics/metric-pass.js +2 -0
- package/dist/analysis/metrics/metric-pass.js.map +1 -0
- package/dist/analysis/metrics/metric-runner.d.ts +21 -0
- package/dist/analysis/metrics/metric-runner.js +47 -0
- package/dist/analysis/metrics/metric-runner.js.map +1 -0
- package/dist/analysis/metrics/passes/cohesion-metrics-pass.d.ts +21 -0
- package/dist/analysis/metrics/passes/cohesion-metrics-pass.js +100 -0
- package/dist/analysis/metrics/passes/cohesion-metrics-pass.js.map +1 -0
- package/dist/analysis/metrics/passes/complexity-metrics-pass.d.ts +15 -0
- package/dist/analysis/metrics/passes/complexity-metrics-pass.js +76 -0
- package/dist/analysis/metrics/passes/complexity-metrics-pass.js.map +1 -0
- package/dist/analysis/metrics/passes/composite-metrics-pass.d.ts +17 -0
- package/dist/analysis/metrics/passes/composite-metrics-pass.js +77 -0
- package/dist/analysis/metrics/passes/composite-metrics-pass.js.map +1 -0
- package/dist/analysis/metrics/passes/coupling-metrics-pass.d.ts +19 -0
- package/dist/analysis/metrics/passes/coupling-metrics-pass.js +94 -0
- package/dist/analysis/metrics/passes/coupling-metrics-pass.js.map +1 -0
- package/dist/analysis/metrics/passes/data-flow-metrics-pass.d.ts +14 -0
- package/dist/analysis/metrics/passes/data-flow-metrics-pass.js +25 -0
- package/dist/analysis/metrics/passes/data-flow-metrics-pass.js.map +1 -0
- package/dist/analysis/metrics/passes/documentation-metrics-pass.d.ts +15 -0
- package/dist/analysis/metrics/passes/documentation-metrics-pass.js +64 -0
- package/dist/analysis/metrics/passes/documentation-metrics-pass.js.map +1 -0
- package/dist/analysis/metrics/passes/halstead-metrics-pass.d.ts +16 -0
- package/dist/analysis/metrics/passes/halstead-metrics-pass.js +95 -0
- package/dist/analysis/metrics/passes/halstead-metrics-pass.js.map +1 -0
- package/dist/analysis/metrics/passes/inheritance-metrics-pass.d.ts +18 -0
- package/dist/analysis/metrics/passes/inheritance-metrics-pass.js +73 -0
- package/dist/analysis/metrics/passes/inheritance-metrics-pass.js.map +1 -0
- package/dist/analysis/metrics/passes/size-metrics-pass.d.ts +11 -0
- package/dist/analysis/metrics/passes/size-metrics-pass.js +64 -0
- package/dist/analysis/metrics/passes/size-metrics-pass.js.map +1 -0
- package/dist/analysis/passes/circular-dependency-pass.d.ts +18 -0
- package/dist/analysis/passes/circular-dependency-pass.js +39 -0
- package/dist/analysis/passes/circular-dependency-pass.js.map +1 -0
- package/dist/analysis/passes/constant-propagation-pass.d.ts +22 -0
- package/dist/analysis/passes/constant-propagation-pass.js +44 -0
- package/dist/analysis/passes/constant-propagation-pass.js.map +1 -0
- package/dist/analysis/passes/cross-file-pass.d.ts +27 -0
- package/dist/analysis/passes/cross-file-pass.js +102 -0
- package/dist/analysis/passes/cross-file-pass.js.map +1 -0
- package/dist/analysis/passes/dead-code-pass.d.ts +25 -0
- package/dist/analysis/passes/dead-code-pass.js +117 -0
- package/dist/analysis/passes/dead-code-pass.js.map +1 -0
- package/dist/analysis/passes/dependency-fan-out-pass.d.ts +19 -0
- package/dist/analysis/passes/dependency-fan-out-pass.js +35 -0
- package/dist/analysis/passes/dependency-fan-out-pass.js.map +1 -0
- package/dist/analysis/passes/interprocedural-pass.d.ts +29 -0
- package/dist/analysis/passes/interprocedural-pass.js +169 -0
- package/dist/analysis/passes/interprocedural-pass.js.map +1 -0
- package/dist/analysis/passes/language-sources-pass.d.ts +76 -0
- package/dist/analysis/passes/language-sources-pass.js +491 -0
- package/dist/analysis/passes/language-sources-pass.js.map +1 -0
- package/dist/analysis/passes/leaked-global-pass.d.ts +34 -0
- package/dist/analysis/passes/leaked-global-pass.js +108 -0
- package/dist/analysis/passes/leaked-global-pass.js.map +1 -0
- package/dist/analysis/passes/missing-await-pass.d.ts +29 -0
- package/dist/analysis/passes/missing-await-pass.js +90 -0
- package/dist/analysis/passes/missing-await-pass.js.map +1 -0
- package/dist/analysis/passes/missing-public-doc-pass.d.ts +35 -0
- package/dist/analysis/passes/missing-public-doc-pass.js +148 -0
- package/dist/analysis/passes/missing-public-doc-pass.js.map +1 -0
- package/dist/analysis/passes/n-plus-one-pass.d.ts +29 -0
- package/dist/analysis/passes/n-plus-one-pass.js +100 -0
- package/dist/analysis/passes/n-plus-one-pass.js.map +1 -0
- package/dist/analysis/passes/null-deref-pass.d.ts +32 -0
- package/dist/analysis/passes/null-deref-pass.js +130 -0
- package/dist/analysis/passes/null-deref-pass.js.map +1 -0
- package/dist/analysis/passes/orphan-module-pass.d.ts +21 -0
- package/dist/analysis/passes/orphan-module-pass.js +38 -0
- package/dist/analysis/passes/orphan-module-pass.js.map +1 -0
- package/dist/analysis/passes/resource-leak-pass.d.ts +43 -0
- package/dist/analysis/passes/resource-leak-pass.js +156 -0
- package/dist/analysis/passes/resource-leak-pass.js.map +1 -0
- package/dist/analysis/passes/sink-filter-pass.d.ts +39 -0
- package/dist/analysis/passes/sink-filter-pass.js +231 -0
- package/dist/analysis/passes/sink-filter-pass.js.map +1 -0
- package/dist/analysis/passes/stale-doc-ref-pass.d.ts +21 -0
- package/dist/analysis/passes/stale-doc-ref-pass.js +96 -0
- package/dist/analysis/passes/stale-doc-ref-pass.js.map +1 -0
- package/dist/analysis/passes/string-concat-loop-pass.d.ts +26 -0
- package/dist/analysis/passes/string-concat-loop-pass.js +87 -0
- package/dist/analysis/passes/string-concat-loop-pass.js.map +1 -0
- package/dist/analysis/passes/sync-io-async-pass.d.ts +28 -0
- package/dist/analysis/passes/sync-io-async-pass.js +80 -0
- package/dist/analysis/passes/sync-io-async-pass.js.map +1 -0
- package/dist/analysis/passes/taint-matcher-pass.d.ts +24 -0
- package/dist/analysis/passes/taint-matcher-pass.js +71 -0
- package/dist/analysis/passes/taint-matcher-pass.js.map +1 -0
- package/dist/analysis/passes/taint-propagation-pass.d.ts +22 -0
- package/dist/analysis/passes/taint-propagation-pass.js +266 -0
- package/dist/analysis/passes/taint-propagation-pass.js.map +1 -0
- package/dist/analysis/passes/todo-in-prod-pass.d.ts +28 -0
- package/dist/analysis/passes/todo-in-prod-pass.js +71 -0
- package/dist/analysis/passes/todo-in-prod-pass.js.map +1 -0
- package/dist/analysis/passes/unchecked-return-pass.d.ts +34 -0
- package/dist/analysis/passes/unchecked-return-pass.js +106 -0
- package/dist/analysis/passes/unchecked-return-pass.js.map +1 -0
- package/dist/analysis/passes/unused-variable-pass.d.ts +36 -0
- package/dist/analysis/passes/unused-variable-pass.js +150 -0
- package/dist/analysis/passes/unused-variable-pass.js.map +1 -0
- package/dist/analysis/passes/variable-shadowing-pass.d.ts +41 -0
- package/dist/analysis/passes/variable-shadowing-pass.js +211 -0
- package/dist/analysis/passes/variable-shadowing-pass.js.map +1 -0
- package/dist/analysis/path-finder.d.ts +3 -13
- package/dist/analysis/path-finder.js +48 -63
- package/dist/analysis/path-finder.js.map +1 -1
- package/dist/analysis/taint-matcher.js +8 -1
- package/dist/analysis/taint-matcher.js.map +1 -1
- package/dist/analysis/taint-propagation.d.ts +5 -1
- package/dist/analysis/taint-propagation.js +44 -41
- package/dist/analysis/taint-propagation.js.map +1 -1
- package/dist/analyzer.d.ts +42 -1
- package/dist/analyzer.js +234 -1476
- package/dist/analyzer.js.map +1 -1
- package/dist/browser/circle-ir.js +3413 -1271
- package/dist/core/circle-ir-core.cjs +360 -106
- package/dist/core/circle-ir-core.js +360 -106
- package/dist/core/extractors/imports.js +18 -0
- package/dist/core/extractors/imports.js.map +1 -1
- package/dist/graph/analysis-pass.d.ts +68 -0
- package/dist/graph/analysis-pass.js +51 -0
- package/dist/graph/analysis-pass.js.map +1 -0
- package/dist/graph/code-graph.d.ts +92 -0
- package/dist/graph/code-graph.js +262 -0
- package/dist/graph/code-graph.js.map +1 -0
- package/dist/graph/import-graph.d.ts +33 -0
- package/dist/graph/import-graph.js +170 -0
- package/dist/graph/import-graph.js.map +1 -0
- package/dist/graph/index.d.ts +4 -0
- package/dist/graph/index.js +5 -0
- package/dist/graph/index.js.map +1 -0
- package/dist/graph/project-graph.d.ts +43 -0
- package/dist/graph/project-graph.js +80 -0
- package/dist/graph/project-graph.js.map +1 -0
- package/dist/graph/scope-graph.d.ts +63 -0
- package/dist/graph/scope-graph.js +89 -0
- package/dist/graph/scope-graph.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/resolution/cross-file.js +52 -19
- package/dist/resolution/cross-file.js.map +1 -1
- package/dist/types/index.d.ts +151 -0
- package/docs/SPEC.md +10 -6
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"imports.js","sourceRoot":"","sources":["../../../src/core/extractors/imports.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"imports.js","sourceRoot":"","sources":["../../../src/core/extractors/imports.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Analysis Pass Interface
|
|
3
|
+
*
|
|
4
|
+
* Defines the contract for modular analysis passes that operate on a CodeGraph.
|
|
5
|
+
* Passes are run sequentially by AnalysisPipeline; each pass reads prior results
|
|
6
|
+
* via context.getResult() and returns a typed result stored under its name.
|
|
7
|
+
*/
|
|
8
|
+
import type { TaintConfig } from '../types/config.js';
|
|
9
|
+
import type { PassCategory, SastFinding } from '../types/index.js';
|
|
10
|
+
import type { CodeGraph } from './code-graph.js';
|
|
11
|
+
/**
|
|
12
|
+
* Context passed to every pass during pipeline execution.
|
|
13
|
+
* Provides shared inputs and access to results from previously-run passes.
|
|
14
|
+
*/
|
|
15
|
+
export interface PassContext {
|
|
16
|
+
/** The shared graph built once before the pipeline runs. */
|
|
17
|
+
readonly graph: CodeGraph;
|
|
18
|
+
/** Raw source code text. */
|
|
19
|
+
readonly code: string;
|
|
20
|
+
/** Language identifier (java, python, javascript, etc.). */
|
|
21
|
+
readonly language: string;
|
|
22
|
+
/** Merged taint configuration (sources + sinks patterns). */
|
|
23
|
+
readonly config: TaintConfig;
|
|
24
|
+
/**
|
|
25
|
+
* Retrieve the result of a previously-run pass.
|
|
26
|
+
* Throws if the pass has not run yet — check pass ordering.
|
|
27
|
+
*/
|
|
28
|
+
getResult<T>(passName: string): T;
|
|
29
|
+
/** Returns true if the named pass has already produced a result. */
|
|
30
|
+
hasResult(passName: string): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Emit a SAST finding from this pass.
|
|
33
|
+
* Findings are collected by the pipeline and returned alongside results.
|
|
34
|
+
*/
|
|
35
|
+
addFinding(finding: SastFinding): void;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* An analysis pass over a CodeGraph.
|
|
39
|
+
* Each pass has a unique name and category used to key its result in the
|
|
40
|
+
* pipeline and group findings by ISO 25010 quality characteristic.
|
|
41
|
+
*/
|
|
42
|
+
export interface AnalysisPass<TResult = unknown> {
|
|
43
|
+
readonly name: string;
|
|
44
|
+
/** ISO 25010 / SonarQube category for findings emitted by this pass. */
|
|
45
|
+
readonly category: PassCategory;
|
|
46
|
+
run(context: PassContext): TResult;
|
|
47
|
+
}
|
|
48
|
+
/** Return value of AnalysisPipeline.run(). */
|
|
49
|
+
export interface PipelineRunResult {
|
|
50
|
+
/** Keyed pass results (same semantics as the previous Map return). */
|
|
51
|
+
results: Map<string, unknown>;
|
|
52
|
+
/** All SastFindings emitted via context.addFinding() across all passes. */
|
|
53
|
+
findings: SastFinding[];
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Runs a sequence of AnalysisPasses, threading context between them.
|
|
57
|
+
*
|
|
58
|
+
* Usage:
|
|
59
|
+
* const { results, findings } = new AnalysisPipeline()
|
|
60
|
+
* .add(new TaintMatcherPass(config))
|
|
61
|
+
* .add(new ConstantPropagationPass(tree))
|
|
62
|
+
* .run(graph, code, language, config);
|
|
63
|
+
*/
|
|
64
|
+
export declare class AnalysisPipeline {
|
|
65
|
+
private readonly passes;
|
|
66
|
+
add<T>(pass: AnalysisPass<T>): this;
|
|
67
|
+
run(graph: CodeGraph, code: string, language: string, config: TaintConfig): PipelineRunResult;
|
|
68
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Analysis Pass Interface
|
|
3
|
+
*
|
|
4
|
+
* Defines the contract for modular analysis passes that operate on a CodeGraph.
|
|
5
|
+
* Passes are run sequentially by AnalysisPipeline; each pass reads prior results
|
|
6
|
+
* via context.getResult() and returns a typed result stored under its name.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Runs a sequence of AnalysisPasses, threading context between them.
|
|
10
|
+
*
|
|
11
|
+
* Usage:
|
|
12
|
+
* const { results, findings } = new AnalysisPipeline()
|
|
13
|
+
* .add(new TaintMatcherPass(config))
|
|
14
|
+
* .add(new ConstantPropagationPass(tree))
|
|
15
|
+
* .run(graph, code, language, config);
|
|
16
|
+
*/
|
|
17
|
+
export class AnalysisPipeline {
|
|
18
|
+
passes = [];
|
|
19
|
+
add(pass) {
|
|
20
|
+
this.passes.push(pass);
|
|
21
|
+
return this;
|
|
22
|
+
}
|
|
23
|
+
run(graph, code, language, config) {
|
|
24
|
+
const results = new Map();
|
|
25
|
+
const findings = [];
|
|
26
|
+
const context = {
|
|
27
|
+
graph,
|
|
28
|
+
code,
|
|
29
|
+
language,
|
|
30
|
+
config,
|
|
31
|
+
getResult(passName) {
|
|
32
|
+
if (!results.has(passName)) {
|
|
33
|
+
throw new Error(`Pass '${passName}' result not available. Check pass ordering.`);
|
|
34
|
+
}
|
|
35
|
+
return results.get(passName);
|
|
36
|
+
},
|
|
37
|
+
hasResult(passName) {
|
|
38
|
+
return results.has(passName);
|
|
39
|
+
},
|
|
40
|
+
addFinding(finding) {
|
|
41
|
+
findings.push(finding);
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
for (const pass of this.passes) {
|
|
45
|
+
const result = pass.run(context);
|
|
46
|
+
results.set(pass.name, result);
|
|
47
|
+
}
|
|
48
|
+
return { results, findings };
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=analysis-pass.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analysis-pass.js","sourceRoot":"","sources":["../../src/graph/analysis-pass.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAwDH;;;;;;;;GAQG;AACH,MAAM,OAAO,gBAAgB;IACV,MAAM,GAAmB,EAAE,CAAC;IAE7C,GAAG,CAAI,IAAqB;QAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CACD,KAAgB,EAChB,IAAY,EACZ,QAAgB,EAChB,MAAmB;QAEnB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAmB,CAAC;QAC3C,MAAM,QAAQ,GAAkB,EAAE,CAAC;QAEnC,MAAM,OAAO,GAAgB;YAC3B,KAAK;YACL,IAAI;YACJ,QAAQ;YACR,MAAM;YACN,SAAS,CAAI,QAAgB;gBAC3B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC3B,MAAM,IAAI,KAAK,CACb,SAAS,QAAQ,8CAA8C,CAChE,CAAC;gBACJ,CAAC;gBACD,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAM,CAAC;YACpC,CAAC;YACD,SAAS,CAAC,QAAgB;gBACxB,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC/B,CAAC;YACD,UAAU,CAAC,OAAoB;gBAC7B,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;SACF,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACjC,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IAC/B,CAAC;CACF"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CodeGraph
|
|
3
|
+
*
|
|
4
|
+
* Wraps a CircleIR and provides lazily-computed indexes over its graph data.
|
|
5
|
+
* Built once per file analysis. All analysis passes consume it — none
|
|
6
|
+
* rebuild their own lookup maps.
|
|
7
|
+
*
|
|
8
|
+
* Design invariants:
|
|
9
|
+
* - `ir` is readonly; CodeGraph never mutates the underlying CircleIR.
|
|
10
|
+
* - All indexes are computed once on first access (null-check lazy init).
|
|
11
|
+
* - No platform-specific APIs: browser + Node.js + Cloudflare Workers safe.
|
|
12
|
+
*/
|
|
13
|
+
import type { CircleIR, CFGBlock, DFGDef, DFGUse, DFGChain, CallInfo, TypeInfo, TaintSanitizer } from '../types/index.js';
|
|
14
|
+
import type { MethodInfo } from '../types/index.js';
|
|
15
|
+
export declare class CodeGraph {
|
|
16
|
+
readonly ir: CircleIR;
|
|
17
|
+
constructor(ir: CircleIR);
|
|
18
|
+
private _defById;
|
|
19
|
+
get defById(): Map<number, DFGDef>;
|
|
20
|
+
private _defsByLine;
|
|
21
|
+
get defsByLine(): Map<number, DFGDef[]>;
|
|
22
|
+
private _defsByVar;
|
|
23
|
+
get defsByVar(): Map<string, DFGDef[]>;
|
|
24
|
+
private _usesByLine;
|
|
25
|
+
get usesByLine(): Map<number, DFGUse[]>;
|
|
26
|
+
private _usesByDefId;
|
|
27
|
+
get usesByDefId(): Map<number, DFGUse[]>;
|
|
28
|
+
private _chainsByFromDef;
|
|
29
|
+
get chainsByFromDef(): Map<number, DFGChain[]>;
|
|
30
|
+
private _callsByLine;
|
|
31
|
+
get callsByLine(): Map<number, CallInfo[]>;
|
|
32
|
+
private _callsByMethod;
|
|
33
|
+
get callsByMethod(): Map<string, CallInfo[]>;
|
|
34
|
+
private _methodsByName;
|
|
35
|
+
get methodsByName(): Map<string, Array<{
|
|
36
|
+
type: TypeInfo;
|
|
37
|
+
method: MethodInfo;
|
|
38
|
+
}>>;
|
|
39
|
+
/**
|
|
40
|
+
* Returns the TypeInfo + MethodInfo whose line range contains `line`, or null.
|
|
41
|
+
* Used by passes that need the enclosing method context for a given line.
|
|
42
|
+
*/
|
|
43
|
+
methodAtLine(line: number): {
|
|
44
|
+
type: TypeInfo;
|
|
45
|
+
method: MethodInfo;
|
|
46
|
+
} | null;
|
|
47
|
+
private _sanitizersByLine;
|
|
48
|
+
get sanitizersByLine(): Map<number, TaintSanitizer[]>;
|
|
49
|
+
/** All DFGDefs at a given line. Returns [] if none. */
|
|
50
|
+
defsAtLine(line: number): DFGDef[];
|
|
51
|
+
/** All DFGUses at a given line. Returns [] if none. */
|
|
52
|
+
usesAtLine(line: number): DFGUse[];
|
|
53
|
+
/** All DFGUses that reach a specific definition ID. Returns [] if none. */
|
|
54
|
+
usesOfDef(defId: number): DFGUse[];
|
|
55
|
+
/** All CallInfos at a given line. Returns [] if none. */
|
|
56
|
+
callsAtLine(line: number): CallInfo[];
|
|
57
|
+
/** DFGChains outgoing from a definition ID. Returns [] if none. */
|
|
58
|
+
chainsFrom(defId: number): DFGChain[];
|
|
59
|
+
/**
|
|
60
|
+
* All definitions of `variable` that appear strictly after `afterLine`
|
|
61
|
+
* and at or before `upToLine`. Used to detect whether a variable is
|
|
62
|
+
* redefined between a taint source and a sink.
|
|
63
|
+
*/
|
|
64
|
+
laterDefsOfVar(variable: string, afterLine: number, upToLine: number): DFGDef[];
|
|
65
|
+
private _blockById;
|
|
66
|
+
get blockById(): Map<number, CFGBlock>;
|
|
67
|
+
/**
|
|
68
|
+
* Returns the line range of each detected loop body in the file.
|
|
69
|
+
*
|
|
70
|
+
* A loop is identified by CFG back-edges (type = "back"). For each back edge
|
|
71
|
+
* `A → B`, B is the loop header and A is the last block before the back-jump.
|
|
72
|
+
* The loop body spans from `header.start_line` to `A.end_line` (inclusive).
|
|
73
|
+
*
|
|
74
|
+
* Returns `{ start_line, end_line }` — one entry per back-edge.
|
|
75
|
+
* Overlapping ranges are returned separately; callers can merge as needed.
|
|
76
|
+
*
|
|
77
|
+
* Usage: check whether line L is inside any loop with
|
|
78
|
+
* `graph.loopBodies().some(r => L >= r.start_line && L <= r.end_line)`
|
|
79
|
+
*/
|
|
80
|
+
loopBodies(): Array<{
|
|
81
|
+
start_line: number;
|
|
82
|
+
end_line: number;
|
|
83
|
+
}>;
|
|
84
|
+
/**
|
|
85
|
+
* Propagate a set of tainted definition IDs through DFGChains to a fixpoint.
|
|
86
|
+
*
|
|
87
|
+
* Returns a new Set (does not mutate the input). Each chain edge
|
|
88
|
+
* `from_def → to_def` spreads taint: if `from_def` is tainted, `to_def`
|
|
89
|
+
* becomes tainted. Iterates until no new IDs are added.
|
|
90
|
+
*/
|
|
91
|
+
propagateTaintedDefIds(seed: Set<number>): Set<number>;
|
|
92
|
+
}
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CodeGraph
|
|
3
|
+
*
|
|
4
|
+
* Wraps a CircleIR and provides lazily-computed indexes over its graph data.
|
|
5
|
+
* Built once per file analysis. All analysis passes consume it — none
|
|
6
|
+
* rebuild their own lookup maps.
|
|
7
|
+
*
|
|
8
|
+
* Design invariants:
|
|
9
|
+
* - `ir` is readonly; CodeGraph never mutates the underlying CircleIR.
|
|
10
|
+
* - All indexes are computed once on first access (null-check lazy init).
|
|
11
|
+
* - No platform-specific APIs: browser + Node.js + Cloudflare Workers safe.
|
|
12
|
+
*/
|
|
13
|
+
export class CodeGraph {
|
|
14
|
+
ir;
|
|
15
|
+
constructor(ir) {
|
|
16
|
+
this.ir = ir;
|
|
17
|
+
}
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
// DFG indexes
|
|
20
|
+
// ---------------------------------------------------------------------------
|
|
21
|
+
_defById = null;
|
|
22
|
+
get defById() {
|
|
23
|
+
if (!this._defById) {
|
|
24
|
+
this._defById = new Map();
|
|
25
|
+
for (const def of this.ir.dfg.defs) {
|
|
26
|
+
this._defById.set(def.id, def);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return this._defById;
|
|
30
|
+
}
|
|
31
|
+
_defsByLine = null;
|
|
32
|
+
get defsByLine() {
|
|
33
|
+
if (!this._defsByLine) {
|
|
34
|
+
this._defsByLine = new Map();
|
|
35
|
+
for (const def of this.ir.dfg.defs) {
|
|
36
|
+
const arr = this._defsByLine.get(def.line) ?? [];
|
|
37
|
+
arr.push(def);
|
|
38
|
+
this._defsByLine.set(def.line, arr);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return this._defsByLine;
|
|
42
|
+
}
|
|
43
|
+
_defsByVar = null;
|
|
44
|
+
get defsByVar() {
|
|
45
|
+
if (!this._defsByVar) {
|
|
46
|
+
this._defsByVar = new Map();
|
|
47
|
+
for (const def of this.ir.dfg.defs) {
|
|
48
|
+
const arr = this._defsByVar.get(def.variable) ?? [];
|
|
49
|
+
arr.push(def);
|
|
50
|
+
this._defsByVar.set(def.variable, arr);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return this._defsByVar;
|
|
54
|
+
}
|
|
55
|
+
_usesByLine = null;
|
|
56
|
+
get usesByLine() {
|
|
57
|
+
if (!this._usesByLine) {
|
|
58
|
+
this._usesByLine = new Map();
|
|
59
|
+
for (const use of this.ir.dfg.uses) {
|
|
60
|
+
const arr = this._usesByLine.get(use.line) ?? [];
|
|
61
|
+
arr.push(use);
|
|
62
|
+
this._usesByLine.set(use.line, arr);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return this._usesByLine;
|
|
66
|
+
}
|
|
67
|
+
_usesByDefId = null;
|
|
68
|
+
get usesByDefId() {
|
|
69
|
+
if (!this._usesByDefId) {
|
|
70
|
+
this._usesByDefId = new Map();
|
|
71
|
+
for (const use of this.ir.dfg.uses) {
|
|
72
|
+
if (use.def_id !== null) {
|
|
73
|
+
const arr = this._usesByDefId.get(use.def_id) ?? [];
|
|
74
|
+
arr.push(use);
|
|
75
|
+
this._usesByDefId.set(use.def_id, arr);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return this._usesByDefId;
|
|
80
|
+
}
|
|
81
|
+
_chainsByFromDef = null;
|
|
82
|
+
get chainsByFromDef() {
|
|
83
|
+
if (!this._chainsByFromDef) {
|
|
84
|
+
this._chainsByFromDef = new Map();
|
|
85
|
+
for (const chain of this.ir.dfg.chains ?? []) {
|
|
86
|
+
const arr = this._chainsByFromDef.get(chain.from_def) ?? [];
|
|
87
|
+
arr.push(chain);
|
|
88
|
+
this._chainsByFromDef.set(chain.from_def, arr);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return this._chainsByFromDef;
|
|
92
|
+
}
|
|
93
|
+
// ---------------------------------------------------------------------------
|
|
94
|
+
// Call indexes
|
|
95
|
+
// ---------------------------------------------------------------------------
|
|
96
|
+
_callsByLine = null;
|
|
97
|
+
get callsByLine() {
|
|
98
|
+
if (!this._callsByLine) {
|
|
99
|
+
this._callsByLine = new Map();
|
|
100
|
+
for (const call of this.ir.calls) {
|
|
101
|
+
const arr = this._callsByLine.get(call.location.line) ?? [];
|
|
102
|
+
arr.push(call);
|
|
103
|
+
this._callsByLine.set(call.location.line, arr);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return this._callsByLine;
|
|
107
|
+
}
|
|
108
|
+
_callsByMethod = null;
|
|
109
|
+
get callsByMethod() {
|
|
110
|
+
if (!this._callsByMethod) {
|
|
111
|
+
this._callsByMethod = new Map();
|
|
112
|
+
for (const call of this.ir.calls) {
|
|
113
|
+
const arr = this._callsByMethod.get(call.method_name) ?? [];
|
|
114
|
+
arr.push(call);
|
|
115
|
+
this._callsByMethod.set(call.method_name, arr);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return this._callsByMethod;
|
|
119
|
+
}
|
|
120
|
+
// ---------------------------------------------------------------------------
|
|
121
|
+
// Type / method indexes
|
|
122
|
+
// ---------------------------------------------------------------------------
|
|
123
|
+
_methodsByName = null;
|
|
124
|
+
get methodsByName() {
|
|
125
|
+
if (!this._methodsByName) {
|
|
126
|
+
this._methodsByName = new Map();
|
|
127
|
+
for (const type of this.ir.types) {
|
|
128
|
+
for (const method of type.methods) {
|
|
129
|
+
const arr = this._methodsByName.get(method.name) ?? [];
|
|
130
|
+
arr.push({ type, method });
|
|
131
|
+
this._methodsByName.set(method.name, arr);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return this._methodsByName;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Returns the TypeInfo + MethodInfo whose line range contains `line`, or null.
|
|
139
|
+
* Used by passes that need the enclosing method context for a given line.
|
|
140
|
+
*/
|
|
141
|
+
methodAtLine(line) {
|
|
142
|
+
for (const type of this.ir.types) {
|
|
143
|
+
for (const method of type.methods) {
|
|
144
|
+
if (line >= method.start_line && line <= method.end_line) {
|
|
145
|
+
return { type, method };
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return null;
|
|
150
|
+
}
|
|
151
|
+
// ---------------------------------------------------------------------------
|
|
152
|
+
// Taint indexes
|
|
153
|
+
// ---------------------------------------------------------------------------
|
|
154
|
+
_sanitizersByLine = null;
|
|
155
|
+
get sanitizersByLine() {
|
|
156
|
+
if (!this._sanitizersByLine) {
|
|
157
|
+
this._sanitizersByLine = new Map();
|
|
158
|
+
for (const san of this.ir.taint.sanitizers ?? []) {
|
|
159
|
+
const arr = this._sanitizersByLine.get(san.line) ?? [];
|
|
160
|
+
arr.push(san);
|
|
161
|
+
this._sanitizersByLine.set(san.line, arr);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return this._sanitizersByLine;
|
|
165
|
+
}
|
|
166
|
+
// ---------------------------------------------------------------------------
|
|
167
|
+
// Query primitives
|
|
168
|
+
// ---------------------------------------------------------------------------
|
|
169
|
+
/** All DFGDefs at a given line. Returns [] if none. */
|
|
170
|
+
defsAtLine(line) {
|
|
171
|
+
return this.defsByLine.get(line) ?? [];
|
|
172
|
+
}
|
|
173
|
+
/** All DFGUses at a given line. Returns [] if none. */
|
|
174
|
+
usesAtLine(line) {
|
|
175
|
+
return this.usesByLine.get(line) ?? [];
|
|
176
|
+
}
|
|
177
|
+
/** All DFGUses that reach a specific definition ID. Returns [] if none. */
|
|
178
|
+
usesOfDef(defId) {
|
|
179
|
+
return this.usesByDefId.get(defId) ?? [];
|
|
180
|
+
}
|
|
181
|
+
/** All CallInfos at a given line. Returns [] if none. */
|
|
182
|
+
callsAtLine(line) {
|
|
183
|
+
return this.callsByLine.get(line) ?? [];
|
|
184
|
+
}
|
|
185
|
+
/** DFGChains outgoing from a definition ID. Returns [] if none. */
|
|
186
|
+
chainsFrom(defId) {
|
|
187
|
+
return this.chainsByFromDef.get(defId) ?? [];
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* All definitions of `variable` that appear strictly after `afterLine`
|
|
191
|
+
* and at or before `upToLine`. Used to detect whether a variable is
|
|
192
|
+
* redefined between a taint source and a sink.
|
|
193
|
+
*/
|
|
194
|
+
laterDefsOfVar(variable, afterLine, upToLine) {
|
|
195
|
+
return (this.defsByVar.get(variable) ?? []).filter(d => d.line > afterLine && d.line <= upToLine);
|
|
196
|
+
}
|
|
197
|
+
// ---------------------------------------------------------------------------
|
|
198
|
+
// CFG indexes
|
|
199
|
+
// ---------------------------------------------------------------------------
|
|
200
|
+
_blockById = null;
|
|
201
|
+
get blockById() {
|
|
202
|
+
if (!this._blockById) {
|
|
203
|
+
this._blockById = new Map();
|
|
204
|
+
for (const block of this.ir.cfg.blocks) {
|
|
205
|
+
this._blockById.set(block.id, block);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
return this._blockById;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Returns the line range of each detected loop body in the file.
|
|
212
|
+
*
|
|
213
|
+
* A loop is identified by CFG back-edges (type = "back"). For each back edge
|
|
214
|
+
* `A → B`, B is the loop header and A is the last block before the back-jump.
|
|
215
|
+
* The loop body spans from `header.start_line` to `A.end_line` (inclusive).
|
|
216
|
+
*
|
|
217
|
+
* Returns `{ start_line, end_line }` — one entry per back-edge.
|
|
218
|
+
* Overlapping ranges are returned separately; callers can merge as needed.
|
|
219
|
+
*
|
|
220
|
+
* Usage: check whether line L is inside any loop with
|
|
221
|
+
* `graph.loopBodies().some(r => L >= r.start_line && L <= r.end_line)`
|
|
222
|
+
*/
|
|
223
|
+
loopBodies() {
|
|
224
|
+
const loops = [];
|
|
225
|
+
for (const edge of this.ir.cfg.edges) {
|
|
226
|
+
if (edge.type !== 'back')
|
|
227
|
+
continue;
|
|
228
|
+
const header = this.blockById.get(edge.to);
|
|
229
|
+
const tail = this.blockById.get(edge.from);
|
|
230
|
+
if (header && tail) {
|
|
231
|
+
loops.push({ start_line: header.start_line, end_line: tail.end_line });
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
return loops;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Propagate a set of tainted definition IDs through DFGChains to a fixpoint.
|
|
238
|
+
*
|
|
239
|
+
* Returns a new Set (does not mutate the input). Each chain edge
|
|
240
|
+
* `from_def → to_def` spreads taint: if `from_def` is tainted, `to_def`
|
|
241
|
+
* becomes tainted. Iterates until no new IDs are added.
|
|
242
|
+
*/
|
|
243
|
+
propagateTaintedDefIds(seed) {
|
|
244
|
+
const result = new Set(seed);
|
|
245
|
+
let changed = true;
|
|
246
|
+
while (changed) {
|
|
247
|
+
changed = false;
|
|
248
|
+
for (const [fromDef, chains] of this.chainsByFromDef) {
|
|
249
|
+
if (!result.has(fromDef))
|
|
250
|
+
continue;
|
|
251
|
+
for (const chain of chains) {
|
|
252
|
+
if (!result.has(chain.to_def)) {
|
|
253
|
+
result.add(chain.to_def);
|
|
254
|
+
changed = true;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
return result;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
//# sourceMappingURL=code-graph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-graph.js","sourceRoot":"","sources":["../../src/graph/code-graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ImportGraph
|
|
3
|
+
*
|
|
4
|
+
* Builds a directed file→file import graph from a ProjectGraph.
|
|
5
|
+
* Only relative imports (from_package starting with '.') are resolved to edges —
|
|
6
|
+
* stdlib and npm package imports are ignored.
|
|
7
|
+
*
|
|
8
|
+
* Used by CircularDependencyPass and OrphanModulePass.
|
|
9
|
+
*/
|
|
10
|
+
import type { ProjectGraph } from './project-graph.js';
|
|
11
|
+
export declare class ImportGraph {
|
|
12
|
+
/** file → set of files it imports */
|
|
13
|
+
private readonly outEdges;
|
|
14
|
+
/** file → set of files that import it */
|
|
15
|
+
private readonly inEdges;
|
|
16
|
+
/** All known file paths */
|
|
17
|
+
private readonly allFiles;
|
|
18
|
+
constructor(projectGraph: ProjectGraph);
|
|
19
|
+
/** Files directly imported by `filePath`. */
|
|
20
|
+
edgesFrom(filePath: string): string[];
|
|
21
|
+
/** Files that directly import `filePath`. */
|
|
22
|
+
edgesTo(filePath: string): string[];
|
|
23
|
+
/**
|
|
24
|
+
* Tarjan's SCC — returns groups of files that form import cycles.
|
|
25
|
+
* Each returned Set has size ≥ 2 (only actual cycles).
|
|
26
|
+
*/
|
|
27
|
+
findCycles(): Set<string>[];
|
|
28
|
+
/**
|
|
29
|
+
* Returns file paths with zero incoming import edges that are not entry points.
|
|
30
|
+
* Entry points: filename base (without extension) matches /^(index|main|app|server|mod)$/i
|
|
31
|
+
*/
|
|
32
|
+
findOrphans(): string[];
|
|
33
|
+
}
|