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,579 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Evaluator - Pattern evaluation and violation detection
|
|
3
|
+
*
|
|
4
|
+
* Provides focused evaluation of code against patterns to determine
|
|
5
|
+
* if code matches a pattern and generate detailed violation information.
|
|
6
|
+
* Works with the PatternMatcher for pattern matching and SeverityManager
|
|
7
|
+
* for severity handling.
|
|
8
|
+
*
|
|
9
|
+
* @requirements 24.1 - THE Enforcement_System SHALL support severity levels: error, warning, info, hint
|
|
10
|
+
*/
|
|
11
|
+
import { PatternMatcher } from '../matcher/pattern-matcher.js';
|
|
12
|
+
import { SeverityManager } from './severity-manager.js';
|
|
13
|
+
import { createRangeFromCoords } from './types.js';
|
|
14
|
+
/**
|
|
15
|
+
* Default Evaluator configuration
|
|
16
|
+
*/
|
|
17
|
+
export const DEFAULT_EVALUATOR_CONFIG = {
|
|
18
|
+
severityConfig: {},
|
|
19
|
+
matcherOptions: {},
|
|
20
|
+
aiExplainAvailable: false,
|
|
21
|
+
aiFixAvailable: false,
|
|
22
|
+
minConfidence: 0.0,
|
|
23
|
+
projectRoot: '.',
|
|
24
|
+
};
|
|
25
|
+
// ============================================================================
|
|
26
|
+
// Evaluator Class
|
|
27
|
+
// ============================================================================
|
|
28
|
+
/**
|
|
29
|
+
* Evaluator class for checking if code matches patterns and determining violations.
|
|
30
|
+
*
|
|
31
|
+
* The evaluator:
|
|
32
|
+
* - Checks if code matches a pattern definition
|
|
33
|
+
* - Determines violation details (location, severity, message)
|
|
34
|
+
* - Works with PatternMatcher for pattern matching
|
|
35
|
+
* - Uses SeverityManager for severity handling
|
|
36
|
+
*
|
|
37
|
+
* @requirements 24.1 - Enforcement system with severity levels
|
|
38
|
+
*/
|
|
39
|
+
export class Evaluator {
|
|
40
|
+
config;
|
|
41
|
+
patternMatcher;
|
|
42
|
+
severityManager;
|
|
43
|
+
violationIdCounter;
|
|
44
|
+
/**
|
|
45
|
+
* Create a new Evaluator instance.
|
|
46
|
+
*
|
|
47
|
+
* @param config - Optional configuration options
|
|
48
|
+
*/
|
|
49
|
+
constructor(config) {
|
|
50
|
+
this.config = {
|
|
51
|
+
...DEFAULT_EVALUATOR_CONFIG,
|
|
52
|
+
...config,
|
|
53
|
+
};
|
|
54
|
+
this.patternMatcher = new PatternMatcher();
|
|
55
|
+
this.severityManager = new SeverityManager(this.config.severityConfig);
|
|
56
|
+
this.violationIdCounter = 0;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Check if code matches a pattern.
|
|
60
|
+
*
|
|
61
|
+
* @param input - The evaluation input (file, content, AST)
|
|
62
|
+
* @param pattern - The pattern to check against
|
|
63
|
+
* @returns True if code matches the pattern (no violations)
|
|
64
|
+
*/
|
|
65
|
+
checkMatch(input, pattern) {
|
|
66
|
+
const result = this.evaluate(input, pattern);
|
|
67
|
+
return result.matches;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Get detailed match information for code against a pattern.
|
|
71
|
+
*
|
|
72
|
+
* @param input - The evaluation input
|
|
73
|
+
* @param pattern - The pattern to check against
|
|
74
|
+
* @returns Array of match details
|
|
75
|
+
*/
|
|
76
|
+
getMatchDetails(input, pattern) {
|
|
77
|
+
const context = this.createMatcherContext(input);
|
|
78
|
+
const definition = this.patternToDefinition(pattern);
|
|
79
|
+
const matches = this.patternMatcher.match(context, definition, this.config.matcherOptions);
|
|
80
|
+
return matches.map((match) => {
|
|
81
|
+
const detail = {
|
|
82
|
+
matches: !match.isOutlier,
|
|
83
|
+
confidence: match.confidence,
|
|
84
|
+
location: match.location,
|
|
85
|
+
isOutlier: match.isOutlier,
|
|
86
|
+
};
|
|
87
|
+
if (match.matchedText !== undefined) {
|
|
88
|
+
detail.matchedText = match.matchedText;
|
|
89
|
+
}
|
|
90
|
+
if (match.outlierReason !== undefined) {
|
|
91
|
+
detail.outlierReason = match.outlierReason;
|
|
92
|
+
}
|
|
93
|
+
return detail;
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Evaluate code against a pattern and get detailed results.
|
|
98
|
+
*
|
|
99
|
+
* @param input - The evaluation input (file, content, AST)
|
|
100
|
+
* @param pattern - The pattern to evaluate against
|
|
101
|
+
* @returns Evaluation result with matches and violations
|
|
102
|
+
*/
|
|
103
|
+
evaluate(input, pattern) {
|
|
104
|
+
const startTime = Date.now();
|
|
105
|
+
const errors = [];
|
|
106
|
+
let patternMatches = [];
|
|
107
|
+
let violations = [];
|
|
108
|
+
try {
|
|
109
|
+
// Create matcher context
|
|
110
|
+
const context = this.createMatcherContext(input);
|
|
111
|
+
// Convert pattern to definition for matching
|
|
112
|
+
const definition = this.patternToDefinition(pattern);
|
|
113
|
+
// Match pattern against code
|
|
114
|
+
patternMatches = this.patternMatcher.match(context, definition, this.config.matcherOptions);
|
|
115
|
+
// Find violations from outliers and missing patterns
|
|
116
|
+
violations = this.findViolations(input, pattern, patternMatches);
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
errors.push({
|
|
120
|
+
message: error instanceof Error ? error.message : String(error),
|
|
121
|
+
code: 'EVALUATION_ERROR',
|
|
122
|
+
recoverable: true,
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
// Calculate overall confidence
|
|
126
|
+
const confidence = this.calculateOverallConfidence(patternMatches);
|
|
127
|
+
// Determine if code matches (no violations)
|
|
128
|
+
const matches = violations.length === 0;
|
|
129
|
+
return {
|
|
130
|
+
patternId: pattern.id,
|
|
131
|
+
file: input.file,
|
|
132
|
+
matches,
|
|
133
|
+
confidence,
|
|
134
|
+
patternMatches,
|
|
135
|
+
violations,
|
|
136
|
+
duration: Date.now() - startTime,
|
|
137
|
+
errors,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Evaluate code against multiple patterns.
|
|
142
|
+
*
|
|
143
|
+
* @param input - The evaluation input
|
|
144
|
+
* @param patterns - Array of patterns to evaluate
|
|
145
|
+
* @returns Array of evaluation results
|
|
146
|
+
*/
|
|
147
|
+
evaluateAll(input, patterns) {
|
|
148
|
+
return patterns.map((pattern) => this.evaluate(input, pattern));
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Evaluate multiple files against patterns.
|
|
152
|
+
*
|
|
153
|
+
* @param inputs - Array of evaluation inputs
|
|
154
|
+
* @param patterns - Array of patterns to evaluate
|
|
155
|
+
* @returns Evaluation summary
|
|
156
|
+
*/
|
|
157
|
+
evaluateFiles(inputs, patterns) {
|
|
158
|
+
const startTime = Date.now();
|
|
159
|
+
const allResults = [];
|
|
160
|
+
const filesEvaluated = [];
|
|
161
|
+
for (const input of inputs) {
|
|
162
|
+
filesEvaluated.push(input.file);
|
|
163
|
+
const results = this.evaluateAll(input, patterns);
|
|
164
|
+
allResults.push(...results);
|
|
165
|
+
}
|
|
166
|
+
return this.summarizeResults(allResults, filesEvaluated, startTime);
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Determine violation details for a specific location.
|
|
170
|
+
*
|
|
171
|
+
* @param input - The evaluation input
|
|
172
|
+
* @param pattern - The pattern being violated
|
|
173
|
+
* @param location - The location of the violation
|
|
174
|
+
* @param reason - Optional reason for the violation
|
|
175
|
+
* @returns Violation object with full details
|
|
176
|
+
*/
|
|
177
|
+
determineViolation(input, pattern, location, reason) {
|
|
178
|
+
const severity = this.severityManager.getEffectiveSeverityWithEscalation(pattern.id, pattern.category);
|
|
179
|
+
const range = this.locationToRange(location);
|
|
180
|
+
const message = reason || `Code deviates from pattern: ${pattern.name}`;
|
|
181
|
+
const violationInput = {
|
|
182
|
+
patternId: pattern.id,
|
|
183
|
+
severity,
|
|
184
|
+
file: input.file,
|
|
185
|
+
range,
|
|
186
|
+
message,
|
|
187
|
+
expected: this.getExpectedFromPattern(pattern),
|
|
188
|
+
actual: this.getActualFromLocation(input.content, location),
|
|
189
|
+
};
|
|
190
|
+
if (reason !== undefined) {
|
|
191
|
+
violationInput.explanation = reason;
|
|
192
|
+
}
|
|
193
|
+
return this.createViolation(violationInput);
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Get the severity manager instance.
|
|
197
|
+
*
|
|
198
|
+
* @returns The severity manager
|
|
199
|
+
*/
|
|
200
|
+
getSeverityManager() {
|
|
201
|
+
return this.severityManager;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Get the pattern matcher instance.
|
|
205
|
+
*
|
|
206
|
+
* @returns The pattern matcher
|
|
207
|
+
*/
|
|
208
|
+
getPatternMatcher() {
|
|
209
|
+
return this.patternMatcher;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Reset the evaluator state.
|
|
213
|
+
*/
|
|
214
|
+
reset() {
|
|
215
|
+
this.violationIdCounter = 0;
|
|
216
|
+
this.severityManager.resetViolationCounts();
|
|
217
|
+
this.patternMatcher.clearCache();
|
|
218
|
+
}
|
|
219
|
+
// ============================================================================
|
|
220
|
+
// Private Methods - Context Creation
|
|
221
|
+
// ============================================================================
|
|
222
|
+
/**
|
|
223
|
+
* Create a matcher context from evaluation input.
|
|
224
|
+
*/
|
|
225
|
+
createMatcherContext(input) {
|
|
226
|
+
return {
|
|
227
|
+
file: input.file,
|
|
228
|
+
content: input.content,
|
|
229
|
+
ast: input.ast,
|
|
230
|
+
language: input.language,
|
|
231
|
+
projectRoot: this.config.projectRoot,
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Convert a Pattern to a PatternDefinition for matching.
|
|
236
|
+
*/
|
|
237
|
+
patternToDefinition(pattern) {
|
|
238
|
+
const definition = {
|
|
239
|
+
id: pattern.id,
|
|
240
|
+
name: pattern.name,
|
|
241
|
+
description: pattern.description,
|
|
242
|
+
category: pattern.category,
|
|
243
|
+
subcategory: pattern.subcategory,
|
|
244
|
+
matchType: pattern.detector.type === 'custom' ? 'custom' : pattern.detector.type,
|
|
245
|
+
enabled: true,
|
|
246
|
+
};
|
|
247
|
+
// Add AST config if present
|
|
248
|
+
if (pattern.detector.ast) {
|
|
249
|
+
definition.astConfig = pattern.detector.ast;
|
|
250
|
+
}
|
|
251
|
+
// Add regex config if present
|
|
252
|
+
if (pattern.detector.regex) {
|
|
253
|
+
const regexConfig = {
|
|
254
|
+
pattern: pattern.detector.regex.pattern,
|
|
255
|
+
};
|
|
256
|
+
if (pattern.detector.regex.flags !== undefined) {
|
|
257
|
+
regexConfig.flags = pattern.detector.regex.flags;
|
|
258
|
+
}
|
|
259
|
+
if (pattern.detector.regex.captureGroups !== undefined) {
|
|
260
|
+
regexConfig.captureGroups = pattern.detector.regex.captureGroups;
|
|
261
|
+
}
|
|
262
|
+
definition.regexConfig = regexConfig;
|
|
263
|
+
}
|
|
264
|
+
// Add structural config if present
|
|
265
|
+
if (pattern.detector.structural) {
|
|
266
|
+
const structuralConfig = {};
|
|
267
|
+
if (pattern.detector.structural.pathPattern !== undefined) {
|
|
268
|
+
structuralConfig.pathPattern = pattern.detector.structural.pathPattern;
|
|
269
|
+
}
|
|
270
|
+
if (pattern.detector.structural.directoryPattern !== undefined) {
|
|
271
|
+
structuralConfig.directoryPattern = pattern.detector.structural.directoryPattern;
|
|
272
|
+
}
|
|
273
|
+
if (pattern.detector.structural.namingPattern !== undefined) {
|
|
274
|
+
structuralConfig.namingPattern = pattern.detector.structural.namingPattern;
|
|
275
|
+
}
|
|
276
|
+
if (pattern.detector.structural.requiredSiblings !== undefined) {
|
|
277
|
+
structuralConfig.requiredSiblings = pattern.detector.structural.requiredSiblings;
|
|
278
|
+
}
|
|
279
|
+
definition.structuralConfig = structuralConfig;
|
|
280
|
+
}
|
|
281
|
+
// Add metadata if present
|
|
282
|
+
if (pattern.metadata.firstSeen || pattern.metadata.lastSeen || pattern.metadata.tags) {
|
|
283
|
+
definition.metadata = {};
|
|
284
|
+
if (pattern.metadata.firstSeen) {
|
|
285
|
+
definition.metadata.firstSeen = new Date(pattern.metadata.firstSeen);
|
|
286
|
+
}
|
|
287
|
+
if (pattern.metadata.lastSeen) {
|
|
288
|
+
definition.metadata.lastSeen = new Date(pattern.metadata.lastSeen);
|
|
289
|
+
}
|
|
290
|
+
if (pattern.metadata.tags) {
|
|
291
|
+
definition.metadata.tags = pattern.metadata.tags;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
return definition;
|
|
295
|
+
}
|
|
296
|
+
// ============================================================================
|
|
297
|
+
// Private Methods - Violation Detection
|
|
298
|
+
// ============================================================================
|
|
299
|
+
/**
|
|
300
|
+
* Find violations based on pattern matches.
|
|
301
|
+
*/
|
|
302
|
+
findViolations(input, pattern, matches) {
|
|
303
|
+
const violations = [];
|
|
304
|
+
// Check for outliers in matches
|
|
305
|
+
for (const match of matches) {
|
|
306
|
+
if (match.isOutlier) {
|
|
307
|
+
const violation = this.createViolationFromOutlier(input, pattern, match);
|
|
308
|
+
violations.push(violation);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
// Check pattern's outlier locations for this file
|
|
312
|
+
const outlierLocations = pattern.outliers.filter((loc) => loc.file === input.file);
|
|
313
|
+
for (const outlier of outlierLocations) {
|
|
314
|
+
const violation = this.createViolationFromOutlierLocation(input, pattern, outlier);
|
|
315
|
+
violations.push(violation);
|
|
316
|
+
}
|
|
317
|
+
// Check for missing expected patterns
|
|
318
|
+
if (this.shouldHavePattern(input, pattern) && matches.length === 0) {
|
|
319
|
+
const violation = this.createMissingPatternViolation(input, pattern);
|
|
320
|
+
violations.push(violation);
|
|
321
|
+
}
|
|
322
|
+
return violations;
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Check if a file should have a pattern.
|
|
326
|
+
*/
|
|
327
|
+
shouldHavePattern(input, pattern) {
|
|
328
|
+
// Check if file matches pattern's expected locations
|
|
329
|
+
return pattern.locations.some((loc) => loc.file === input.file);
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Create a violation from an outlier match.
|
|
333
|
+
*/
|
|
334
|
+
createViolationFromOutlier(input, pattern, match) {
|
|
335
|
+
const severity = this.severityManager.getEffectiveSeverityWithEscalation(pattern.id, pattern.category);
|
|
336
|
+
const range = this.locationToRange(match.location);
|
|
337
|
+
const violationInput = {
|
|
338
|
+
patternId: pattern.id,
|
|
339
|
+
severity,
|
|
340
|
+
file: input.file,
|
|
341
|
+
range,
|
|
342
|
+
message: this.generateViolationMessage(pattern, match),
|
|
343
|
+
expected: this.getExpectedFromPattern(pattern),
|
|
344
|
+
actual: match.matchedText || 'Code deviates from pattern',
|
|
345
|
+
};
|
|
346
|
+
if (match.outlierReason !== undefined) {
|
|
347
|
+
violationInput.explanation = match.outlierReason;
|
|
348
|
+
}
|
|
349
|
+
return this.createViolation(violationInput);
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Create a violation from an outlier location.
|
|
353
|
+
*/
|
|
354
|
+
createViolationFromOutlierLocation(input, pattern, outlier) {
|
|
355
|
+
const severity = this.severityManager.getEffectiveSeverityWithEscalation(pattern.id, pattern.category);
|
|
356
|
+
const range = createRangeFromCoords(outlier.line - 1, // Convert to 0-indexed
|
|
357
|
+
outlier.column - 1, (outlier.endLine || outlier.line) - 1, (outlier.endColumn || outlier.column) - 1);
|
|
358
|
+
const violationInput = {
|
|
359
|
+
patternId: pattern.id,
|
|
360
|
+
severity,
|
|
361
|
+
file: input.file,
|
|
362
|
+
range,
|
|
363
|
+
message: `Pattern violation: ${pattern.name}`,
|
|
364
|
+
expected: this.getExpectedFromPattern(pattern),
|
|
365
|
+
actual: `Code at line ${outlier.line} deviates from pattern`,
|
|
366
|
+
};
|
|
367
|
+
if (outlier.reason !== undefined) {
|
|
368
|
+
violationInput.explanation = outlier.reason;
|
|
369
|
+
}
|
|
370
|
+
return this.createViolation(violationInput);
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Create a violation for a missing pattern.
|
|
374
|
+
*/
|
|
375
|
+
createMissingPatternViolation(input, pattern) {
|
|
376
|
+
const severity = this.severityManager.getEffectiveSeverityWithEscalation(pattern.id, pattern.category);
|
|
377
|
+
// Find the expected location in this file
|
|
378
|
+
const expectedLocation = pattern.locations.find((loc) => loc.file === input.file);
|
|
379
|
+
const range = expectedLocation
|
|
380
|
+
? this.patternLocationToRange(expectedLocation)
|
|
381
|
+
: createRangeFromCoords(0, 0, 0, 0);
|
|
382
|
+
return this.createViolation({
|
|
383
|
+
patternId: pattern.id,
|
|
384
|
+
severity,
|
|
385
|
+
file: input.file,
|
|
386
|
+
range,
|
|
387
|
+
message: `Missing expected pattern: ${pattern.name}`,
|
|
388
|
+
explanation: `Expected to find pattern "${pattern.name}" but it was not detected.`,
|
|
389
|
+
expected: this.getExpectedFromPattern(pattern),
|
|
390
|
+
actual: 'Pattern not found',
|
|
391
|
+
});
|
|
392
|
+
}
|
|
393
|
+
// ============================================================================
|
|
394
|
+
// Private Methods - Violation Creation
|
|
395
|
+
// ============================================================================
|
|
396
|
+
/**
|
|
397
|
+
* Create a violation with full details.
|
|
398
|
+
*/
|
|
399
|
+
createViolation(input) {
|
|
400
|
+
const id = this.generateViolationId();
|
|
401
|
+
const violation = {
|
|
402
|
+
id,
|
|
403
|
+
patternId: input.patternId,
|
|
404
|
+
severity: input.severity,
|
|
405
|
+
file: input.file,
|
|
406
|
+
range: input.range,
|
|
407
|
+
message: input.message,
|
|
408
|
+
expected: input.expected,
|
|
409
|
+
actual: input.actual,
|
|
410
|
+
aiExplainAvailable: this.config.aiExplainAvailable,
|
|
411
|
+
aiFixAvailable: this.config.aiFixAvailable,
|
|
412
|
+
firstSeen: new Date(),
|
|
413
|
+
occurrences: 1,
|
|
414
|
+
};
|
|
415
|
+
// Add optional properties only if defined
|
|
416
|
+
if (input.explanation !== undefined) {
|
|
417
|
+
violation.explanation = input.explanation;
|
|
418
|
+
}
|
|
419
|
+
if (input.quickFix !== undefined) {
|
|
420
|
+
violation.quickFix = input.quickFix;
|
|
421
|
+
}
|
|
422
|
+
return violation;
|
|
423
|
+
}
|
|
424
|
+
/**
|
|
425
|
+
* Generate a unique violation ID.
|
|
426
|
+
*/
|
|
427
|
+
generateViolationId() {
|
|
428
|
+
this.violationIdCounter++;
|
|
429
|
+
return `eval-violation-${Date.now()}-${this.violationIdCounter}`;
|
|
430
|
+
}
|
|
431
|
+
/**
|
|
432
|
+
* Generate a violation message from pattern and match.
|
|
433
|
+
*/
|
|
434
|
+
generateViolationMessage(pattern, match) {
|
|
435
|
+
if (match.outlierReason) {
|
|
436
|
+
return `${pattern.name}: ${match.outlierReason}`;
|
|
437
|
+
}
|
|
438
|
+
return `Code deviates from pattern: ${pattern.name}`;
|
|
439
|
+
}
|
|
440
|
+
/**
|
|
441
|
+
* Get expected code/structure from pattern.
|
|
442
|
+
*/
|
|
443
|
+
getExpectedFromPattern(pattern) {
|
|
444
|
+
return pattern.description || `Follow the ${pattern.name} pattern`;
|
|
445
|
+
}
|
|
446
|
+
/**
|
|
447
|
+
* Get actual code from a location.
|
|
448
|
+
*/
|
|
449
|
+
getActualFromLocation(content, location) {
|
|
450
|
+
const lines = content.split('\n');
|
|
451
|
+
const lineIndex = location.line - 1; // Convert to 0-indexed
|
|
452
|
+
if (lineIndex >= 0 && lineIndex < lines.length) {
|
|
453
|
+
const line = lines[lineIndex];
|
|
454
|
+
if (line !== undefined) {
|
|
455
|
+
// Return the line or a portion of it
|
|
456
|
+
const maxLength = 100;
|
|
457
|
+
if (line.length > maxLength) {
|
|
458
|
+
return line.substring(0, maxLength) + '...';
|
|
459
|
+
}
|
|
460
|
+
return line;
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
return 'Unable to extract code';
|
|
464
|
+
}
|
|
465
|
+
// ============================================================================
|
|
466
|
+
// Private Methods - Location Conversion
|
|
467
|
+
// ============================================================================
|
|
468
|
+
/**
|
|
469
|
+
* Convert a Location to a Range.
|
|
470
|
+
*/
|
|
471
|
+
locationToRange(location) {
|
|
472
|
+
return createRangeFromCoords(location.line - 1, // Convert to 0-indexed
|
|
473
|
+
location.column - 1, (location.endLine || location.line) - 1, (location.endColumn || location.column) - 1);
|
|
474
|
+
}
|
|
475
|
+
/**
|
|
476
|
+
* Convert a PatternLocation to a Range.
|
|
477
|
+
*/
|
|
478
|
+
patternLocationToRange(location) {
|
|
479
|
+
return createRangeFromCoords(location.line - 1, // Convert to 0-indexed
|
|
480
|
+
location.column - 1, (location.endLine || location.line) - 1, (location.endColumn || location.column) - 1);
|
|
481
|
+
}
|
|
482
|
+
// ============================================================================
|
|
483
|
+
// Private Methods - Confidence Calculation
|
|
484
|
+
// ============================================================================
|
|
485
|
+
/**
|
|
486
|
+
* Calculate overall confidence from pattern matches.
|
|
487
|
+
*/
|
|
488
|
+
calculateOverallConfidence(matches) {
|
|
489
|
+
if (matches.length === 0) {
|
|
490
|
+
return 0;
|
|
491
|
+
}
|
|
492
|
+
// Calculate average confidence of non-outlier matches
|
|
493
|
+
const validMatches = matches.filter((m) => !m.isOutlier);
|
|
494
|
+
if (validMatches.length === 0) {
|
|
495
|
+
return 0;
|
|
496
|
+
}
|
|
497
|
+
const totalConfidence = validMatches.reduce((sum, match) => sum + match.confidence, 0);
|
|
498
|
+
return totalConfidence / validMatches.length;
|
|
499
|
+
}
|
|
500
|
+
// ============================================================================
|
|
501
|
+
// Private Methods - Result Summarization
|
|
502
|
+
// ============================================================================
|
|
503
|
+
/**
|
|
504
|
+
* Summarize evaluation results.
|
|
505
|
+
*/
|
|
506
|
+
summarizeResults(results, filesEvaluated, startTime) {
|
|
507
|
+
let patternsMatched = 0;
|
|
508
|
+
let patternsViolated = 0;
|
|
509
|
+
let totalViolations = 0;
|
|
510
|
+
const violationsBySeverity = {
|
|
511
|
+
error: 0,
|
|
512
|
+
warning: 0,
|
|
513
|
+
info: 0,
|
|
514
|
+
hint: 0,
|
|
515
|
+
};
|
|
516
|
+
for (const result of results) {
|
|
517
|
+
if (result.matches) {
|
|
518
|
+
patternsMatched++;
|
|
519
|
+
}
|
|
520
|
+
else {
|
|
521
|
+
patternsViolated++;
|
|
522
|
+
}
|
|
523
|
+
totalViolations += result.violations.length;
|
|
524
|
+
for (const violation of result.violations) {
|
|
525
|
+
violationsBySeverity[violation.severity]++;
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
return {
|
|
529
|
+
patternsEvaluated: results.length,
|
|
530
|
+
patternsMatched,
|
|
531
|
+
patternsViolated,
|
|
532
|
+
totalViolations,
|
|
533
|
+
violationsBySeverity,
|
|
534
|
+
totalDuration: Date.now() - startTime,
|
|
535
|
+
filesEvaluated,
|
|
536
|
+
};
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
// ============================================================================
|
|
540
|
+
// Factory Functions
|
|
541
|
+
// ============================================================================
|
|
542
|
+
/**
|
|
543
|
+
* Create an Evaluator with default configuration.
|
|
544
|
+
*
|
|
545
|
+
* @returns New Evaluator instance
|
|
546
|
+
*/
|
|
547
|
+
export function createEvaluator() {
|
|
548
|
+
return new Evaluator();
|
|
549
|
+
}
|
|
550
|
+
/**
|
|
551
|
+
* Create an Evaluator with custom configuration.
|
|
552
|
+
*
|
|
553
|
+
* @param config - Configuration options
|
|
554
|
+
* @returns New Evaluator instance
|
|
555
|
+
*/
|
|
556
|
+
export function createEvaluatorWithConfig(config) {
|
|
557
|
+
return new Evaluator(config);
|
|
558
|
+
}
|
|
559
|
+
/**
|
|
560
|
+
* Create an Evaluator with AI features enabled.
|
|
561
|
+
*
|
|
562
|
+
* @returns New Evaluator instance with AI features
|
|
563
|
+
*/
|
|
564
|
+
export function createEvaluatorWithAI() {
|
|
565
|
+
return new Evaluator({
|
|
566
|
+
aiExplainAvailable: true,
|
|
567
|
+
aiFixAvailable: true,
|
|
568
|
+
});
|
|
569
|
+
}
|
|
570
|
+
/**
|
|
571
|
+
* Create an Evaluator with a custom severity manager.
|
|
572
|
+
*
|
|
573
|
+
* @param severityConfig - Severity manager configuration
|
|
574
|
+
* @returns New Evaluator instance
|
|
575
|
+
*/
|
|
576
|
+
export function createEvaluatorWithSeverity(severityConfig) {
|
|
577
|
+
return new Evaluator({ severityConfig });
|
|
578
|
+
}
|
|
579
|
+
//# sourceMappingURL=evaluator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../../src/rules/evaluator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rules module exports
|
|
3
|
+
*
|
|
4
|
+
* Provides rule evaluation, violation generation, quick fix generation,
|
|
5
|
+
* and variant management for intentional deviations.
|
|
6
|
+
*/
|
|
7
|
+
export * from './types.js';
|
|
8
|
+
export * from './severity-manager.js';
|
|
9
|
+
export * from './rule-engine.js';
|
|
10
|
+
export * from './evaluator.js';
|
|
11
|
+
export * from './quick-fix-generator.js';
|
|
12
|
+
export * from './variant-manager.js';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rules module exports
|
|
3
|
+
*
|
|
4
|
+
* Provides rule evaluation, violation generation, quick fix generation,
|
|
5
|
+
* and variant management for intentional deviations.
|
|
6
|
+
*/
|
|
7
|
+
export * from './types.js';
|
|
8
|
+
export * from './severity-manager.js';
|
|
9
|
+
export * from './rule-engine.js';
|
|
10
|
+
export * from './evaluator.js';
|
|
11
|
+
export * from './quick-fix-generator.js';
|
|
12
|
+
export * from './variant-manager.js';
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC"}
|