driftdetect-core 0.1.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/analyzers/ast-analyzer.d.ts +251 -0
- package/dist/analyzers/ast-analyzer.d.ts.map +1 -0
- package/dist/analyzers/ast-analyzer.js +548 -0
- package/dist/analyzers/ast-analyzer.js.map +1 -0
- package/dist/analyzers/flow-analyzer.d.ts +241 -0
- package/dist/analyzers/flow-analyzer.d.ts.map +1 -0
- package/dist/analyzers/flow-analyzer.js +1219 -0
- package/dist/analyzers/flow-analyzer.js.map +1 -0
- package/dist/analyzers/index.d.ts +18 -0
- package/dist/analyzers/index.d.ts.map +1 -0
- package/dist/analyzers/index.js +19 -0
- package/dist/analyzers/index.js.map +1 -0
- package/dist/analyzers/semantic-analyzer.d.ts +252 -0
- package/dist/analyzers/semantic-analyzer.d.ts.map +1 -0
- package/dist/analyzers/semantic-analyzer.js +1182 -0
- package/dist/analyzers/semantic-analyzer.js.map +1 -0
- package/dist/analyzers/type-analyzer.d.ts +289 -0
- package/dist/analyzers/type-analyzer.d.ts.map +1 -0
- package/dist/analyzers/type-analyzer.js +1269 -0
- package/dist/analyzers/type-analyzer.js.map +1 -0
- package/dist/analyzers/types.d.ts +537 -0
- package/dist/analyzers/types.d.ts.map +1 -0
- package/dist/analyzers/types.js +11 -0
- package/dist/analyzers/types.js.map +1 -0
- package/dist/config/config-loader.d.ts +166 -0
- package/dist/config/config-loader.d.ts.map +1 -0
- package/dist/config/config-loader.js +429 -0
- package/dist/config/config-loader.js.map +1 -0
- package/dist/config/config-validator.d.ts +204 -0
- package/dist/config/config-validator.d.ts.map +1 -0
- package/dist/config/config-validator.js +632 -0
- package/dist/config/config-validator.js.map +1 -0
- package/dist/config/defaults.d.ts +8 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +26 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/index.d.ts +10 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +10 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/types.d.ts +47 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +7 -0
- package/dist/config/types.js.map +1 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +39 -0
- package/dist/index.js.map +1 -0
- package/dist/manifest/exporter.d.ts +21 -0
- package/dist/manifest/exporter.d.ts.map +1 -0
- package/dist/manifest/exporter.js +339 -0
- package/dist/manifest/exporter.js.map +1 -0
- package/dist/manifest/index.d.ts +14 -0
- package/dist/manifest/index.d.ts.map +1 -0
- package/dist/manifest/index.js +15 -0
- package/dist/manifest/index.js.map +1 -0
- package/dist/manifest/manifest-store.d.ts +111 -0
- package/dist/manifest/manifest-store.d.ts.map +1 -0
- package/dist/manifest/manifest-store.js +418 -0
- package/dist/manifest/manifest-store.js.map +1 -0
- package/dist/manifest/types.d.ts +238 -0
- package/dist/manifest/types.d.ts.map +1 -0
- package/dist/manifest/types.js +11 -0
- package/dist/manifest/types.js.map +1 -0
- package/dist/matcher/confidence-scorer.d.ts +188 -0
- package/dist/matcher/confidence-scorer.d.ts.map +1 -0
- package/dist/matcher/confidence-scorer.js +302 -0
- package/dist/matcher/confidence-scorer.js.map +1 -0
- package/dist/matcher/index.d.ts +24 -0
- package/dist/matcher/index.d.ts.map +1 -0
- package/dist/matcher/index.js +26 -0
- package/dist/matcher/index.js.map +1 -0
- package/dist/matcher/outlier-detector.d.ts +252 -0
- package/dist/matcher/outlier-detector.d.ts.map +1 -0
- package/dist/matcher/outlier-detector.js +544 -0
- package/dist/matcher/outlier-detector.js.map +1 -0
- package/dist/matcher/pattern-matcher.d.ts +169 -0
- package/dist/matcher/pattern-matcher.d.ts.map +1 -0
- package/dist/matcher/pattern-matcher.js +692 -0
- package/dist/matcher/pattern-matcher.js.map +1 -0
- package/dist/matcher/types.d.ts +476 -0
- package/dist/matcher/types.d.ts.map +1 -0
- package/dist/matcher/types.js +36 -0
- package/dist/matcher/types.js.map +1 -0
- package/dist/parsers/base-parser.d.ts +282 -0
- package/dist/parsers/base-parser.d.ts.map +1 -0
- package/dist/parsers/base-parser.js +421 -0
- package/dist/parsers/base-parser.js.map +1 -0
- package/dist/parsers/css-parser.d.ts +225 -0
- package/dist/parsers/css-parser.d.ts.map +1 -0
- package/dist/parsers/css-parser.js +477 -0
- package/dist/parsers/css-parser.js.map +1 -0
- package/dist/parsers/index.d.ts +15 -0
- package/dist/parsers/index.d.ts.map +1 -0
- package/dist/parsers/index.js +15 -0
- package/dist/parsers/index.js.map +1 -0
- package/dist/parsers/json-parser.d.ts +219 -0
- package/dist/parsers/json-parser.d.ts.map +1 -0
- package/dist/parsers/json-parser.js +602 -0
- package/dist/parsers/json-parser.js.map +1 -0
- package/dist/parsers/markdown-parser.d.ts +276 -0
- package/dist/parsers/markdown-parser.d.ts.map +1 -0
- package/dist/parsers/markdown-parser.js +731 -0
- package/dist/parsers/markdown-parser.js.map +1 -0
- package/dist/parsers/parser-manager.d.ts +294 -0
- package/dist/parsers/parser-manager.d.ts.map +1 -0
- package/dist/parsers/parser-manager.js +738 -0
- package/dist/parsers/parser-manager.js.map +1 -0
- package/dist/parsers/python-parser.d.ts +204 -0
- package/dist/parsers/python-parser.d.ts.map +1 -0
- package/dist/parsers/python-parser.js +517 -0
- package/dist/parsers/python-parser.js.map +1 -0
- package/dist/parsers/types.d.ts +43 -0
- package/dist/parsers/types.d.ts.map +1 -0
- package/dist/parsers/types.js +7 -0
- package/dist/parsers/types.js.map +1 -0
- package/dist/parsers/typescript-parser.d.ts +264 -0
- package/dist/parsers/typescript-parser.d.ts.map +1 -0
- package/dist/parsers/typescript-parser.js +658 -0
- package/dist/parsers/typescript-parser.js.map +1 -0
- package/dist/rules/evaluator.d.ts +305 -0
- package/dist/rules/evaluator.d.ts.map +1 -0
- package/dist/rules/evaluator.js +579 -0
- package/dist/rules/evaluator.js.map +1 -0
- package/dist/rules/index.d.ts +13 -0
- package/dist/rules/index.d.ts.map +1 -0
- package/dist/rules/index.js +13 -0
- package/dist/rules/index.js.map +1 -0
- package/dist/rules/quick-fix-generator.d.ts +334 -0
- package/dist/rules/quick-fix-generator.d.ts.map +1 -0
- package/dist/rules/quick-fix-generator.js +1075 -0
- package/dist/rules/quick-fix-generator.js.map +1 -0
- package/dist/rules/rule-engine.d.ts +241 -0
- package/dist/rules/rule-engine.d.ts.map +1 -0
- package/dist/rules/rule-engine.js +585 -0
- package/dist/rules/rule-engine.js.map +1 -0
- package/dist/rules/severity-manager.d.ts +394 -0
- package/dist/rules/severity-manager.d.ts.map +1 -0
- package/dist/rules/severity-manager.js +619 -0
- package/dist/rules/severity-manager.js.map +1 -0
- package/dist/rules/types.d.ts +370 -0
- package/dist/rules/types.d.ts.map +1 -0
- package/dist/rules/types.js +133 -0
- package/dist/rules/types.js.map +1 -0
- package/dist/rules/variant-manager.d.ts +388 -0
- package/dist/rules/variant-manager.d.ts.map +1 -0
- package/dist/rules/variant-manager.js +777 -0
- package/dist/rules/variant-manager.js.map +1 -0
- package/dist/scanner/change-detector.d.ts +164 -0
- package/dist/scanner/change-detector.d.ts.map +1 -0
- package/dist/scanner/change-detector.js +263 -0
- package/dist/scanner/change-detector.js.map +1 -0
- package/dist/scanner/dependency-graph.d.ts +270 -0
- package/dist/scanner/dependency-graph.d.ts.map +1 -0
- package/dist/scanner/dependency-graph.js +436 -0
- package/dist/scanner/dependency-graph.js.map +1 -0
- package/dist/scanner/file-walker.d.ts +127 -0
- package/dist/scanner/file-walker.d.ts.map +1 -0
- package/dist/scanner/file-walker.js +526 -0
- package/dist/scanner/file-walker.js.map +1 -0
- package/dist/scanner/index.d.ts +12 -0
- package/dist/scanner/index.d.ts.map +1 -0
- package/dist/scanner/index.js +12 -0
- package/dist/scanner/index.js.map +1 -0
- package/dist/scanner/types.d.ts +218 -0
- package/dist/scanner/types.d.ts.map +1 -0
- package/dist/scanner/types.js +10 -0
- package/dist/scanner/types.js.map +1 -0
- package/dist/scanner/worker-pool.d.ts +317 -0
- package/dist/scanner/worker-pool.d.ts.map +1 -0
- package/dist/scanner/worker-pool.js +571 -0
- package/dist/scanner/worker-pool.js.map +1 -0
- package/dist/store/cache-manager.d.ts +179 -0
- package/dist/store/cache-manager.d.ts.map +1 -0
- package/dist/store/cache-manager.js +391 -0
- package/dist/store/cache-manager.js.map +1 -0
- package/dist/store/history-store.d.ts +314 -0
- package/dist/store/history-store.d.ts.map +1 -0
- package/dist/store/history-store.js +707 -0
- package/dist/store/history-store.js.map +1 -0
- package/dist/store/index.d.ts +20 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +26 -0
- package/dist/store/index.js.map +1 -0
- package/dist/store/lock-file-manager.d.ts +202 -0
- package/dist/store/lock-file-manager.d.ts.map +1 -0
- package/dist/store/lock-file-manager.js +475 -0
- package/dist/store/lock-file-manager.js.map +1 -0
- package/dist/store/pattern-store.d.ts +289 -0
- package/dist/store/pattern-store.d.ts.map +1 -0
- package/dist/store/pattern-store.js +936 -0
- package/dist/store/pattern-store.js.map +1 -0
- package/dist/store/schema-validator.d.ts +159 -0
- package/dist/store/schema-validator.d.ts.map +1 -0
- package/dist/store/schema-validator.js +1096 -0
- package/dist/store/schema-validator.js.map +1 -0
- package/dist/store/types.d.ts +585 -0
- package/dist/store/types.d.ts.map +1 -0
- package/dist/store/types.js +82 -0
- package/dist/store/types.js.map +1 -0
- package/dist/types/analysis.d.ts +19 -0
- package/dist/types/analysis.d.ts.map +1 -0
- package/dist/types/analysis.js +5 -0
- package/dist/types/analysis.js.map +1 -0
- package/dist/types/common.d.ts +7 -0
- package/dist/types/common.d.ts.map +1 -0
- package/dist/types/common.js +5 -0
- package/dist/types/common.js.map +1 -0
- package/dist/types/index.d.ts +12 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +10 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/patterns.d.ts +40 -0
- package/dist/types/patterns.d.ts.map +1 -0
- package/dist/types/patterns.js +7 -0
- package/dist/types/patterns.js.map +1 -0
- package/dist/types/violations.d.ts +7 -0
- package/dist/types/violations.d.ts.map +1 -0
- package/dist/types/violations.js +7 -0
- package/dist/types/violations.js.map +1 -0
- package/package.json +46 -0
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Flow Analyzer - Control flow and data flow analysis
|
|
3
|
+
*
|
|
4
|
+
* Provides control flow graph (CFG) construction from AST,
|
|
5
|
+
* data flow analysis (reads, writes, captures), detection of
|
|
6
|
+
* unreachable code, infinite loops, missing return statements,
|
|
7
|
+
* null/undefined dereferences, unused variables, and uninitialized reads.
|
|
8
|
+
*
|
|
9
|
+
* @requirements 3.5 - Parser SHALL provide a unified AST query interface across all languages
|
|
10
|
+
*/
|
|
11
|
+
import type { AST, ASTNode } from '../parsers/types.js';
|
|
12
|
+
import type { FlowAnalysisResult, ControlFlowNode, ControlFlowEdge } from './types.js';
|
|
13
|
+
/**
|
|
14
|
+
* Options for flow analysis
|
|
15
|
+
*/
|
|
16
|
+
export interface FlowAnalysisOptions {
|
|
17
|
+
/** Whether to detect unreachable code */
|
|
18
|
+
detectUnreachable?: boolean;
|
|
19
|
+
/** Whether to detect infinite loops */
|
|
20
|
+
detectInfiniteLoops?: boolean;
|
|
21
|
+
/** Whether to detect missing return statements */
|
|
22
|
+
detectMissingReturns?: boolean;
|
|
23
|
+
/** Whether to detect null/undefined dereferences */
|
|
24
|
+
detectNullDereferences?: boolean;
|
|
25
|
+
/** Whether to detect unused variables */
|
|
26
|
+
detectUnusedVariables?: boolean;
|
|
27
|
+
/** Whether to detect uninitialized variable reads */
|
|
28
|
+
detectUninitializedReads?: boolean;
|
|
29
|
+
/** Maximum depth for analysis */
|
|
30
|
+
maxDepth?: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Flow Analyzer class for control flow and data flow analysis.
|
|
34
|
+
*
|
|
35
|
+
* Provides a unified interface for analyzing control flow and data flow
|
|
36
|
+
* across TypeScript and JavaScript code.
|
|
37
|
+
*
|
|
38
|
+
* @requirements 3.5 - Unified AST query interface across all languages
|
|
39
|
+
*/
|
|
40
|
+
export declare class FlowAnalyzer {
|
|
41
|
+
/** Counter for generating unique node IDs */
|
|
42
|
+
private nodeIdCounter;
|
|
43
|
+
/** All CFG nodes during construction */
|
|
44
|
+
private nodes;
|
|
45
|
+
/** All CFG edges during construction */
|
|
46
|
+
private edges;
|
|
47
|
+
/** Entry node ID */
|
|
48
|
+
private entryNodeId;
|
|
49
|
+
/** Exit node IDs */
|
|
50
|
+
private exitNodeIds;
|
|
51
|
+
/** Unreachable code locations */
|
|
52
|
+
private unreachableCode;
|
|
53
|
+
/** Infinite loop locations */
|
|
54
|
+
private infiniteLoops;
|
|
55
|
+
/** Missing return locations */
|
|
56
|
+
private missingReturns;
|
|
57
|
+
/** Current analysis options */
|
|
58
|
+
private options;
|
|
59
|
+
/**
|
|
60
|
+
* Analyze an AST and produce flow analysis results.
|
|
61
|
+
*
|
|
62
|
+
* @param ast - The AST to analyze
|
|
63
|
+
* @param options - Analysis options
|
|
64
|
+
* @returns Flow analysis result
|
|
65
|
+
*/
|
|
66
|
+
analyze(ast: AST, options?: FlowAnalysisOptions): FlowAnalysisResult;
|
|
67
|
+
/**
|
|
68
|
+
* Analyze a single function/method for flow.
|
|
69
|
+
*
|
|
70
|
+
* @param node - The function AST node
|
|
71
|
+
* @param options - Analysis options
|
|
72
|
+
* @returns Flow analysis result for the function
|
|
73
|
+
*/
|
|
74
|
+
analyzeFunction(node: ASTNode, options?: FlowAnalysisOptions): FlowAnalysisResult;
|
|
75
|
+
/**
|
|
76
|
+
* Build CFG from an AST node.
|
|
77
|
+
* Returns the IDs of nodes that flow out of this construct.
|
|
78
|
+
*/
|
|
79
|
+
private buildCFG;
|
|
80
|
+
/**
|
|
81
|
+
* Build CFG for a block of statements.
|
|
82
|
+
*/
|
|
83
|
+
private buildBlockCFG;
|
|
84
|
+
/**
|
|
85
|
+
* Build CFG for an if statement.
|
|
86
|
+
*/
|
|
87
|
+
private buildIfCFG;
|
|
88
|
+
/**
|
|
89
|
+
* Build CFG for a for statement.
|
|
90
|
+
*/
|
|
91
|
+
private buildForCFG;
|
|
92
|
+
/**
|
|
93
|
+
* Build CFG for a for-in or for-of statement.
|
|
94
|
+
*/
|
|
95
|
+
private buildForInOfCFG;
|
|
96
|
+
/**
|
|
97
|
+
* Build CFG for a while statement.
|
|
98
|
+
*/
|
|
99
|
+
private buildWhileCFG;
|
|
100
|
+
/**
|
|
101
|
+
* Build CFG for a do-while statement.
|
|
102
|
+
*/
|
|
103
|
+
private buildDoWhileCFG;
|
|
104
|
+
/**
|
|
105
|
+
* Build CFG for a switch statement.
|
|
106
|
+
*/
|
|
107
|
+
private buildSwitchCFG;
|
|
108
|
+
/**
|
|
109
|
+
* Build CFG for a try statement.
|
|
110
|
+
*/
|
|
111
|
+
private buildTryCFG;
|
|
112
|
+
/**
|
|
113
|
+
* Build CFG for a return statement.
|
|
114
|
+
*/
|
|
115
|
+
private buildReturnCFG;
|
|
116
|
+
/**
|
|
117
|
+
* Build CFG for a throw statement.
|
|
118
|
+
*/
|
|
119
|
+
private buildThrowCFG;
|
|
120
|
+
/**
|
|
121
|
+
* Build CFG for a break statement.
|
|
122
|
+
*/
|
|
123
|
+
private buildBreakCFG;
|
|
124
|
+
/**
|
|
125
|
+
* Build CFG for a continue statement.
|
|
126
|
+
*/
|
|
127
|
+
private buildContinueCFG;
|
|
128
|
+
/**
|
|
129
|
+
* Build CFG for a regular statement.
|
|
130
|
+
*/
|
|
131
|
+
private buildStatementCFG;
|
|
132
|
+
/**
|
|
133
|
+
* Analyze data flow in an AST.
|
|
134
|
+
*/
|
|
135
|
+
private analyzeDataFlow;
|
|
136
|
+
/**
|
|
137
|
+
* Traverse AST for data flow information.
|
|
138
|
+
*/
|
|
139
|
+
private traverseForDataFlow;
|
|
140
|
+
/**
|
|
141
|
+
* Detect potential null/undefined dereferences.
|
|
142
|
+
*/
|
|
143
|
+
private detectNullDereferences;
|
|
144
|
+
/**
|
|
145
|
+
* Check if an expression is potentially null/undefined.
|
|
146
|
+
*/
|
|
147
|
+
private isPotentiallyNull;
|
|
148
|
+
/**
|
|
149
|
+
* Mark all reachable nodes starting from entry.
|
|
150
|
+
*/
|
|
151
|
+
private markReachableNodes;
|
|
152
|
+
/**
|
|
153
|
+
* Detect unreachable code.
|
|
154
|
+
*/
|
|
155
|
+
private detectUnreachableCode;
|
|
156
|
+
/**
|
|
157
|
+
* Check for infinite loops.
|
|
158
|
+
*/
|
|
159
|
+
private checkInfiniteLoop;
|
|
160
|
+
/**
|
|
161
|
+
* Check for missing return statements.
|
|
162
|
+
*/
|
|
163
|
+
private checkMissingReturns;
|
|
164
|
+
/**
|
|
165
|
+
* Find the condition expression in a loop/if.
|
|
166
|
+
*/
|
|
167
|
+
private findCondition;
|
|
168
|
+
/**
|
|
169
|
+
* Check if a node contains break or return.
|
|
170
|
+
*/
|
|
171
|
+
private hasBreakOrReturn;
|
|
172
|
+
/**
|
|
173
|
+
* Reset analyzer state.
|
|
174
|
+
*/
|
|
175
|
+
private reset;
|
|
176
|
+
/**
|
|
177
|
+
* Create a new CFG node.
|
|
178
|
+
*/
|
|
179
|
+
private createNode;
|
|
180
|
+
/**
|
|
181
|
+
* Add an edge between two nodes.
|
|
182
|
+
*/
|
|
183
|
+
private addEdge;
|
|
184
|
+
/**
|
|
185
|
+
* Create a flow context.
|
|
186
|
+
*/
|
|
187
|
+
private createFlowContext;
|
|
188
|
+
/**
|
|
189
|
+
* Collect function parameters into context.
|
|
190
|
+
*/
|
|
191
|
+
private collectFunctionParameters;
|
|
192
|
+
/**
|
|
193
|
+
* Collect variable declarations into context.
|
|
194
|
+
*/
|
|
195
|
+
private collectVariableDeclarations;
|
|
196
|
+
/**
|
|
197
|
+
* Get parameter name from a parameter node.
|
|
198
|
+
*/
|
|
199
|
+
private getParameterName;
|
|
200
|
+
/**
|
|
201
|
+
* Find a child node by type.
|
|
202
|
+
*/
|
|
203
|
+
private findChildByType;
|
|
204
|
+
/**
|
|
205
|
+
* Check if a node is a statement.
|
|
206
|
+
*/
|
|
207
|
+
private isStatement;
|
|
208
|
+
/**
|
|
209
|
+
* Get the parent context for an identifier (read or write).
|
|
210
|
+
*/
|
|
211
|
+
private getParentContext;
|
|
212
|
+
/**
|
|
213
|
+
* Find a variable in parent contexts.
|
|
214
|
+
*/
|
|
215
|
+
private findVariableInParentContext;
|
|
216
|
+
/**
|
|
217
|
+
* Build the final result.
|
|
218
|
+
*/
|
|
219
|
+
private buildResult;
|
|
220
|
+
/**
|
|
221
|
+
* Get all nodes in the CFG.
|
|
222
|
+
*/
|
|
223
|
+
getNodes(): ControlFlowNode[];
|
|
224
|
+
/**
|
|
225
|
+
* Get all edges in the CFG.
|
|
226
|
+
*/
|
|
227
|
+
getEdges(): ControlFlowEdge[];
|
|
228
|
+
/**
|
|
229
|
+
* Check if a node is reachable.
|
|
230
|
+
*/
|
|
231
|
+
isNodeReachable(nodeId: string): boolean;
|
|
232
|
+
/**
|
|
233
|
+
* Get predecessors of a node.
|
|
234
|
+
*/
|
|
235
|
+
getPredecessors(nodeId: string): string[];
|
|
236
|
+
/**
|
|
237
|
+
* Get successors of a node.
|
|
238
|
+
*/
|
|
239
|
+
getSuccessors(nodeId: string): string[];
|
|
240
|
+
}
|
|
241
|
+
//# sourceMappingURL=flow-analyzer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flow-analyzer.d.ts","sourceRoot":"","sources":["../../src/analyzers/flow-analyzer.ts"],"names":[],"mappings":"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"}
|