@vibe-validate/extractors 0.17.0-rc1 → 0.17.0-rc2
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/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/maven-checkstyle-extractor.d.ts +20 -0
- package/dist/maven-checkstyle-extractor.d.ts.map +1 -0
- package/dist/maven-checkstyle-extractor.js +208 -0
- package/dist/maven-checkstyle-extractor.js.map +1 -0
- package/dist/maven-surefire-extractor.d.ts +20 -0
- package/dist/maven-surefire-extractor.d.ts.map +1 -0
- package/dist/maven-surefire-extractor.js +228 -0
- package/dist/maven-surefire-extractor.js.map +1 -0
- package/dist/smart-extractor.d.ts.map +1 -1
- package/dist/smart-extractor.js +23 -0
- package/dist/smart-extractor.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -33,6 +33,8 @@ export { extractJestErrors } from './jest-extractor.js';
|
|
|
33
33
|
export { extractJUnitErrors } from './junit-extractor.js';
|
|
34
34
|
export { extractMochaErrors } from './mocha-extractor.js';
|
|
35
35
|
export { extractJasmineErrors } from './jasmine-extractor.js';
|
|
36
|
+
export { extractMavenCheckstyle } from './maven-checkstyle-extractor.js';
|
|
37
|
+
export { extractMavenSurefire } from './maven-surefire-extractor.js';
|
|
36
38
|
export { extractGenericErrors } from './generic-extractor.js';
|
|
37
39
|
export { autoDetectAndExtract } from './smart-extractor.js';
|
|
38
40
|
export { stripAnsiCodes, extractErrorLines } from './utils.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAGH,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjE,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,uBAAuB,EACvB,wBAAwB,EACxB,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAG9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAG5D,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAGH,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjE,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,uBAAuB,EACvB,wBAAwB,EACxB,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAG9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAG5D,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -33,6 +33,8 @@ export { extractJestErrors } from './jest-extractor.js';
|
|
|
33
33
|
export { extractJUnitErrors } from './junit-extractor.js';
|
|
34
34
|
export { extractMochaErrors } from './mocha-extractor.js';
|
|
35
35
|
export { extractJasmineErrors } from './jasmine-extractor.js';
|
|
36
|
+
export { extractMavenCheckstyle } from './maven-checkstyle-extractor.js';
|
|
37
|
+
export { extractMavenSurefire } from './maven-surefire-extractor.js';
|
|
36
38
|
export { extractGenericErrors } from './generic-extractor.js';
|
|
37
39
|
// Smart extractor (auto-detection - recommended)
|
|
38
40
|
export { autoDetectAndExtract } from './smart-extractor.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAaH,qCAAqC;AACrC,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,uBAAuB,EACvB,wBAAwB,EACxB,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAE5B,yCAAyC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,iDAAiD;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,YAAY;AACZ,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAaH,qCAAqC;AACrC,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,uBAAuB,EACvB,wBAAwB,EACxB,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAE5B,yCAAyC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,iDAAiD;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,YAAY;AACZ,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Maven Checkstyle error extractor
|
|
3
|
+
*
|
|
4
|
+
* Extracts errors from Maven Checkstyle plugin output.
|
|
5
|
+
* Supports both output formats generated by maven-checkstyle-plugin.
|
|
6
|
+
*/
|
|
7
|
+
import type { ErrorExtractorResult } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Detects if output is from Maven Checkstyle
|
|
10
|
+
*/
|
|
11
|
+
export declare function detectMavenCheckstyle(output: string): {
|
|
12
|
+
confidence: number;
|
|
13
|
+
patterns: string[];
|
|
14
|
+
reason: string;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Extracts Checkstyle violations from Maven output
|
|
18
|
+
*/
|
|
19
|
+
export declare function extractMavenCheckstyle(output: string, command?: string): ErrorExtractorResult;
|
|
20
|
+
//# sourceMappingURL=maven-checkstyle-extractor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"maven-checkstyle-extractor.d.ts","sourceRoot":"","sources":["../src/maven-checkstyle-extractor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAkB,MAAM,YAAY,CAAC;AAmCvE;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG;IACrD,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB,CA+CA;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,GACf,oBAAoB,CAmGtB"}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Maven Checkstyle error extractor
|
|
3
|
+
*
|
|
4
|
+
* Extracts errors from Maven Checkstyle plugin output.
|
|
5
|
+
* Supports both output formats generated by maven-checkstyle-plugin.
|
|
6
|
+
*/
|
|
7
|
+
import { MAX_ERRORS_IN_ARRAY } from './result-schema.js';
|
|
8
|
+
const CHECKSTYLE_PATTERNS = {
|
|
9
|
+
// Format 1: [WARN] /absolute/path:line:col: message [Rule]
|
|
10
|
+
// eslint-disable-next-line sonarjs/slow-regex -- Safe: Maven Checkstyle output is structured, limited line length
|
|
11
|
+
warnFormat: /^\[WARN\]\s+([^:]+):(\d+):(\d+):\s+(.+?)\s+\[(\w+)\]$/,
|
|
12
|
+
// Format 2: [WARNING] relative/path:[line,col] (category) Rule: message
|
|
13
|
+
// eslint-disable-next-line sonarjs/slow-regex -- Safe: Maven Checkstyle output is structured, limited line length
|
|
14
|
+
warningFormat: /^\[WARNING\]\s+([^:]+):\[(\d+)(?:,(\d+))?\]\s+\((\w+)\)\s+(\w+):\s+(.+)$/,
|
|
15
|
+
// Summary line: "You have N Checkstyle violations"
|
|
16
|
+
summary: /You have (\d+) Checkstyle violations/,
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Detects if output is from Maven Checkstyle
|
|
20
|
+
*/
|
|
21
|
+
export function detectMavenCheckstyle(output) {
|
|
22
|
+
const lines = output.split('\n');
|
|
23
|
+
let score = 0;
|
|
24
|
+
const foundPatterns = [];
|
|
25
|
+
// Look for Checkstyle-specific markers
|
|
26
|
+
let hasViolationFormat = false;
|
|
27
|
+
for (const line of lines) {
|
|
28
|
+
if (line.includes('maven-checkstyle-plugin')) {
|
|
29
|
+
score += 40;
|
|
30
|
+
foundPatterns.push('maven-checkstyle-plugin reference');
|
|
31
|
+
}
|
|
32
|
+
if (line.includes('Starting audit')) {
|
|
33
|
+
score += 20;
|
|
34
|
+
foundPatterns.push('Checkstyle audit start marker');
|
|
35
|
+
}
|
|
36
|
+
if (line.includes('Audit done')) {
|
|
37
|
+
score += 20;
|
|
38
|
+
foundPatterns.push('Checkstyle audit complete marker');
|
|
39
|
+
}
|
|
40
|
+
if (CHECKSTYLE_PATTERNS.summary.test(line)) {
|
|
41
|
+
score += 30;
|
|
42
|
+
foundPatterns.push('Checkstyle violation summary');
|
|
43
|
+
}
|
|
44
|
+
if (!hasViolationFormat && (CHECKSTYLE_PATTERNS.warnFormat.test(line) || CHECKSTYLE_PATTERNS.warningFormat.test(line))) {
|
|
45
|
+
score += 10;
|
|
46
|
+
foundPatterns.push('Checkstyle violation format');
|
|
47
|
+
hasViolationFormat = true; // Only count once, but don't break - keep looking for other markers
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
// Determine reason based on score
|
|
51
|
+
let reason;
|
|
52
|
+
if (score >= 70) {
|
|
53
|
+
reason = 'Maven Checkstyle plugin output detected';
|
|
54
|
+
}
|
|
55
|
+
else if (score >= 40) {
|
|
56
|
+
reason = 'Possible Maven Checkstyle output';
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
reason = 'Not Maven Checkstyle output';
|
|
60
|
+
}
|
|
61
|
+
return {
|
|
62
|
+
confidence: Math.min(score, 100),
|
|
63
|
+
patterns: foundPatterns,
|
|
64
|
+
reason,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Extracts Checkstyle violations from Maven output
|
|
69
|
+
*/
|
|
70
|
+
export function extractMavenCheckstyle(output, command) {
|
|
71
|
+
const detection = detectMavenCheckstyle(output);
|
|
72
|
+
if (detection.confidence < 40) {
|
|
73
|
+
return {
|
|
74
|
+
summary: 'Not Maven Checkstyle output',
|
|
75
|
+
totalErrors: 0,
|
|
76
|
+
errors: [],
|
|
77
|
+
metadata: {
|
|
78
|
+
detection: {
|
|
79
|
+
extractor: 'maven-checkstyle',
|
|
80
|
+
confidence: detection.confidence,
|
|
81
|
+
patterns: detection.patterns,
|
|
82
|
+
reason: detection.reason,
|
|
83
|
+
},
|
|
84
|
+
confidence: detection.confidence,
|
|
85
|
+
completeness: 100,
|
|
86
|
+
issues: [],
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
const violations = [];
|
|
91
|
+
const lines = output.split('\n');
|
|
92
|
+
for (const line of lines) {
|
|
93
|
+
// Try Format 1: [WARN] /path:line:col: message [Rule]
|
|
94
|
+
const warnMatch = CHECKSTYLE_PATTERNS.warnFormat.exec(line);
|
|
95
|
+
if (warnMatch) {
|
|
96
|
+
const [, filePath, lineStr, colStr, message, rule] = warnMatch;
|
|
97
|
+
violations.push({
|
|
98
|
+
file: extractRelativePath(filePath),
|
|
99
|
+
line: Number.parseInt(lineStr, 10),
|
|
100
|
+
column: Number.parseInt(colStr, 10),
|
|
101
|
+
message: message.trim(),
|
|
102
|
+
rule: rule.trim(),
|
|
103
|
+
});
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
// Try Format 2: [WARNING] path:[line,col] (category) Rule: message
|
|
107
|
+
const warningMatch = CHECKSTYLE_PATTERNS.warningFormat.exec(line);
|
|
108
|
+
if (warningMatch) {
|
|
109
|
+
const [, filePath, lineStr, colStr, category, rule, message] = warningMatch;
|
|
110
|
+
violations.push({
|
|
111
|
+
file: filePath.trim(),
|
|
112
|
+
line: Number.parseInt(lineStr, 10),
|
|
113
|
+
column: colStr ? Number.parseInt(colStr, 10) : undefined,
|
|
114
|
+
message: message.trim(),
|
|
115
|
+
rule: rule.trim(),
|
|
116
|
+
category: category.trim(),
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
// Remove duplicates (both formats report same violations)
|
|
121
|
+
const uniqueViolations = deduplicateViolations(violations);
|
|
122
|
+
// Convert to FormattedError format
|
|
123
|
+
const errors = uniqueViolations.slice(0, MAX_ERRORS_IN_ARRAY).map((v) => ({
|
|
124
|
+
file: v.file,
|
|
125
|
+
line: v.line,
|
|
126
|
+
column: v.column,
|
|
127
|
+
message: `${v.message} [${v.rule}]`,
|
|
128
|
+
}));
|
|
129
|
+
// Group by file for summary
|
|
130
|
+
const fileGroups = groupByFile(uniqueViolations);
|
|
131
|
+
const summary = `${uniqueViolations.length} Checkstyle violation(s) in ${fileGroups.size} file(s)`;
|
|
132
|
+
// Generate guidance
|
|
133
|
+
const guidance = uniqueViolations.length > 0
|
|
134
|
+
? `Fix Checkstyle violations. Run ${command ?? 'mvn checkstyle:check'} to see all details.`
|
|
135
|
+
: undefined;
|
|
136
|
+
// Create error summary
|
|
137
|
+
const errorSummary = errors.length > 0
|
|
138
|
+
? errors.map((e, i) => `[Error ${i + 1}/${errors.length}] ${e.file}:${e.line}\n${e.message}`).join('\n\n')
|
|
139
|
+
: undefined;
|
|
140
|
+
return {
|
|
141
|
+
summary,
|
|
142
|
+
totalErrors: uniqueViolations.length,
|
|
143
|
+
errors,
|
|
144
|
+
guidance,
|
|
145
|
+
errorSummary,
|
|
146
|
+
metadata: {
|
|
147
|
+
detection: {
|
|
148
|
+
extractor: 'maven-checkstyle',
|
|
149
|
+
confidence: detection.confidence,
|
|
150
|
+
patterns: detection.patterns,
|
|
151
|
+
reason: detection.reason,
|
|
152
|
+
},
|
|
153
|
+
confidence: 100,
|
|
154
|
+
completeness: 100,
|
|
155
|
+
issues: [],
|
|
156
|
+
},
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Extract relative path from absolute path
|
|
161
|
+
* /Users/name/project/src/main/java/Foo.java -> src/main/java/Foo.java
|
|
162
|
+
*/
|
|
163
|
+
function extractRelativePath(absolutePath) {
|
|
164
|
+
// Common Java source roots
|
|
165
|
+
const sourceRoots = ['src/main/java', 'src/test/java', 'src/main/kotlin', 'src/test/kotlin'];
|
|
166
|
+
for (const root of sourceRoots) {
|
|
167
|
+
const index = absolutePath.indexOf(root);
|
|
168
|
+
if (index !== -1) {
|
|
169
|
+
return absolutePath.slice(index);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
// Fallback: return last 3 path segments
|
|
173
|
+
const segments = absolutePath.split('/');
|
|
174
|
+
return segments.slice(-3).join('/');
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Deduplicate violations (both formats report same violations)
|
|
178
|
+
*/
|
|
179
|
+
function deduplicateViolations(violations) {
|
|
180
|
+
const seen = new Set();
|
|
181
|
+
const unique = [];
|
|
182
|
+
for (const v of violations) {
|
|
183
|
+
const key = `${v.file}:${v.line}:${v.column}:${v.rule}`;
|
|
184
|
+
if (!seen.has(key)) {
|
|
185
|
+
seen.add(key);
|
|
186
|
+
unique.push(v);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
return unique;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Group violations by file
|
|
193
|
+
*/
|
|
194
|
+
function groupByFile(violations) {
|
|
195
|
+
const groups = new Map();
|
|
196
|
+
for (const violation of violations) {
|
|
197
|
+
const file = violation.file || 'unknown';
|
|
198
|
+
if (!groups.has(file)) {
|
|
199
|
+
groups.set(file, []);
|
|
200
|
+
}
|
|
201
|
+
const group = groups.get(file);
|
|
202
|
+
if (group) {
|
|
203
|
+
group.push(violation);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
return groups;
|
|
207
|
+
}
|
|
208
|
+
//# sourceMappingURL=maven-checkstyle-extractor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"maven-checkstyle-extractor.js","sourceRoot":"","sources":["../src/maven-checkstyle-extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Maven Surefire/Failsafe (JUnit) error extractor
|
|
3
|
+
*
|
|
4
|
+
* Extracts test failures from Maven Surefire and Failsafe plugin output.
|
|
5
|
+
* Supports JUnit 4, JUnit 5, and AssertJ assertion failures.
|
|
6
|
+
*/
|
|
7
|
+
import type { ErrorExtractorResult } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Detects if output is from Maven Surefire/Failsafe
|
|
10
|
+
*/
|
|
11
|
+
export declare function detectMavenSurefire(output: string): {
|
|
12
|
+
confidence: number;
|
|
13
|
+
patterns: string[];
|
|
14
|
+
reason: string;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Extracts test failures from Maven Surefire/Failsafe output
|
|
18
|
+
*/
|
|
19
|
+
export declare function extractMavenSurefire(output: string, command?: string): ErrorExtractorResult;
|
|
20
|
+
//# sourceMappingURL=maven-surefire-extractor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"maven-surefire-extractor.d.ts","sourceRoot":"","sources":["../src/maven-surefire-extractor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAkB,MAAM,YAAY,CAAC;AAkCvE;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB,CA2CA;AAED;;GAEG;AAEH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,GACf,oBAAoB,CAsLtB"}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Maven Surefire/Failsafe (JUnit) error extractor
|
|
3
|
+
*
|
|
4
|
+
* Extracts test failures from Maven Surefire and Failsafe plugin output.
|
|
5
|
+
* Supports JUnit 4, JUnit 5, and AssertJ assertion failures.
|
|
6
|
+
*/
|
|
7
|
+
import { MAX_ERRORS_IN_ARRAY } from './result-schema.js';
|
|
8
|
+
/* eslint-disable sonarjs/slow-regex -- All regexes safe: Maven Surefire output is structured with limited line length */
|
|
9
|
+
const SUREFIRE_PATTERNS = {
|
|
10
|
+
// [ERROR] Tests run: 12, Failures: 8, Errors: 3, Skipped: 1
|
|
11
|
+
testSummary: /^\[ERROR\]\s+Tests run:\s+(\d+),\s+Failures:\s+(\d+),\s+Errors:\s+(\d+)/,
|
|
12
|
+
// [ERROR] com.example.FooTest.testBar:42 Expected 5 but was 3
|
|
13
|
+
errorShort: /^\[ERROR\]\s+([^:]+)\.([^:]+):(\d+)\s+(\w+(?:Error|Exception|Failure))?\s*(.+)$/,
|
|
14
|
+
// [ERROR] com.example.FooTest.testBar -- Time elapsed: 0.123 s <<< FAILURE!
|
|
15
|
+
errorHeader: /^\[ERROR\]\s+([^.]+)\.([^\s]+)\s+.*<<<\s+(FAILURE|ERROR)!/,
|
|
16
|
+
// Exception type line
|
|
17
|
+
exceptionType: /^([\w.]+(?:Error|Exception|AssertionError|AssertionFailedError)):\s*(.*)$/,
|
|
18
|
+
// "at package.Class.method(File.java:123)"
|
|
19
|
+
stackTraceLine: /^\s+at\s+([^(]+)\(([^:]+):(\d+)\)/,
|
|
20
|
+
};
|
|
21
|
+
/* eslint-enable sonarjs/slow-regex */
|
|
22
|
+
/**
|
|
23
|
+
* Detects if output is from Maven Surefire/Failsafe
|
|
24
|
+
*/
|
|
25
|
+
export function detectMavenSurefire(output) {
|
|
26
|
+
const lines = output.split('\n');
|
|
27
|
+
let score = 0;
|
|
28
|
+
const foundPatterns = [];
|
|
29
|
+
for (const line of lines) {
|
|
30
|
+
if (line.includes('maven-surefire-plugin') ?? line.includes('maven-failsafe-plugin')) {
|
|
31
|
+
score += 40;
|
|
32
|
+
foundPatterns.push('Maven test plugin reference');
|
|
33
|
+
}
|
|
34
|
+
if (SUREFIRE_PATTERNS.testSummary.exec(line)) {
|
|
35
|
+
score += 40;
|
|
36
|
+
foundPatterns.push('Test summary (Tests run, Failures, Errors)');
|
|
37
|
+
}
|
|
38
|
+
if (line.includes('<<< FAILURE!') || line.includes('<<< ERROR!')) {
|
|
39
|
+
score += 20;
|
|
40
|
+
foundPatterns.push('Test failure markers');
|
|
41
|
+
}
|
|
42
|
+
if (line.includes('[ERROR] Failures:') || line.includes('[ERROR] Errors:')) {
|
|
43
|
+
score += 15;
|
|
44
|
+
foundPatterns.push('Test failure section headers');
|
|
45
|
+
}
|
|
46
|
+
if (/AssertionError|AssertionFailedError/.exec(line)) {
|
|
47
|
+
score += 10;
|
|
48
|
+
foundPatterns.push('JUnit assertion errors');
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// Determine reason based on score
|
|
52
|
+
let reason;
|
|
53
|
+
if (score >= 70) {
|
|
54
|
+
reason = 'Maven Surefire/Failsafe test output detected';
|
|
55
|
+
}
|
|
56
|
+
else if (score >= 40) {
|
|
57
|
+
reason = 'Possible Maven test output';
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
reason = 'Not Maven test output';
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
confidence: Math.min(score, 100),
|
|
64
|
+
patterns: foundPatterns,
|
|
65
|
+
reason,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Extracts test failures from Maven Surefire/Failsafe output
|
|
70
|
+
*/
|
|
71
|
+
// eslint-disable-next-line sonarjs/cognitive-complexity -- Complexity 43 acceptable for Maven Surefire parser (handles multiple test output formats with state machine)
|
|
72
|
+
export function extractMavenSurefire(output, command) {
|
|
73
|
+
const detection = detectMavenSurefire(output);
|
|
74
|
+
if (detection.confidence < 40) {
|
|
75
|
+
return {
|
|
76
|
+
summary: 'Not Maven test output',
|
|
77
|
+
totalErrors: 0,
|
|
78
|
+
errors: [],
|
|
79
|
+
metadata: {
|
|
80
|
+
detection: {
|
|
81
|
+
extractor: 'maven-surefire',
|
|
82
|
+
confidence: detection.confidence,
|
|
83
|
+
patterns: detection.patterns,
|
|
84
|
+
reason: detection.reason,
|
|
85
|
+
},
|
|
86
|
+
confidence: detection.confidence,
|
|
87
|
+
completeness: 100,
|
|
88
|
+
issues: [],
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
const failures = [];
|
|
93
|
+
const lines = output.split('\n');
|
|
94
|
+
// Extract test summary for metadata
|
|
95
|
+
let totalFailures = 0;
|
|
96
|
+
let totalErrors = 0;
|
|
97
|
+
for (const line of lines) {
|
|
98
|
+
const summaryMatch = SUREFIRE_PATTERNS.testSummary.exec(line);
|
|
99
|
+
if (summaryMatch) {
|
|
100
|
+
// totalTests would be summaryMatch[1] if needed
|
|
101
|
+
totalFailures = Number.parseInt(summaryMatch[2], 10);
|
|
102
|
+
totalErrors = Number.parseInt(summaryMatch[3], 10);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Parse failure details
|
|
106
|
+
let currentFailure = null;
|
|
107
|
+
let inStackTrace = false;
|
|
108
|
+
for (const line of lines) {
|
|
109
|
+
// Check for error header: [ERROR] Class.method -- Time elapsed: ... <<< FAILURE!
|
|
110
|
+
const headerMatch = SUREFIRE_PATTERNS.errorHeader.exec(line);
|
|
111
|
+
if (headerMatch) {
|
|
112
|
+
// Save previous failure if exists
|
|
113
|
+
if (currentFailure?.testClass && currentFailure?.testMethod) {
|
|
114
|
+
failures.push(currentFailure);
|
|
115
|
+
}
|
|
116
|
+
const [, testClass, testMethod, errorType] = headerMatch;
|
|
117
|
+
currentFailure = {
|
|
118
|
+
testClass: testClass.trim(),
|
|
119
|
+
testMethod: testMethod.trim(),
|
|
120
|
+
errorType: errorType,
|
|
121
|
+
message: '',
|
|
122
|
+
stackTrace: [],
|
|
123
|
+
};
|
|
124
|
+
inStackTrace = false;
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
// Check for short error format: [ERROR] Class.method:line Message
|
|
128
|
+
const shortMatch = SUREFIRE_PATTERNS.errorShort.exec(line);
|
|
129
|
+
if (shortMatch && !currentFailure) {
|
|
130
|
+
const [, fullMethod, testMethod, lineStr, exceptionType, message] = shortMatch;
|
|
131
|
+
const testClass = fullMethod.substring(0, fullMethod.lastIndexOf('.'));
|
|
132
|
+
failures.push({
|
|
133
|
+
testClass,
|
|
134
|
+
testMethod,
|
|
135
|
+
line: Number.parseInt(lineStr, 10),
|
|
136
|
+
errorType: 'FAILURE',
|
|
137
|
+
exceptionType: exceptionType ?? undefined,
|
|
138
|
+
message: message.trim(),
|
|
139
|
+
});
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
// Parse exception type and message
|
|
143
|
+
if (currentFailure && !currentFailure.message) {
|
|
144
|
+
const exceptionMatch = SUREFIRE_PATTERNS.exceptionType.exec(line);
|
|
145
|
+
if (exceptionMatch) {
|
|
146
|
+
const [, exceptionType, message] = exceptionMatch;
|
|
147
|
+
currentFailure.exceptionType = exceptionType;
|
|
148
|
+
currentFailure.message = message.trim();
|
|
149
|
+
inStackTrace = true;
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
// Parse stack trace
|
|
154
|
+
if (currentFailure && inStackTrace) {
|
|
155
|
+
const stackMatch = SUREFIRE_PATTERNS.stackTraceLine.exec(line);
|
|
156
|
+
if (stackMatch) {
|
|
157
|
+
const [, method, file, lineStr] = stackMatch;
|
|
158
|
+
// Extract file and line from first stack frame
|
|
159
|
+
if (!currentFailure.file && file.endsWith('.java')) {
|
|
160
|
+
currentFailure.file = file;
|
|
161
|
+
currentFailure.line = Number.parseInt(lineStr, 10);
|
|
162
|
+
}
|
|
163
|
+
currentFailure.stackTrace = currentFailure.stackTrace ?? [];
|
|
164
|
+
currentFailure.stackTrace.push(` at ${method}(${file}:${lineStr})`);
|
|
165
|
+
// Limit stack trace depth
|
|
166
|
+
if (currentFailure.stackTrace.length >= 3) {
|
|
167
|
+
inStackTrace = false;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
// End of error block
|
|
172
|
+
if (line.trim() === '' && currentFailure) {
|
|
173
|
+
inStackTrace = false;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
// Save last failure
|
|
177
|
+
if (currentFailure?.testClass && currentFailure?.testMethod) {
|
|
178
|
+
failures.push(currentFailure);
|
|
179
|
+
}
|
|
180
|
+
// Convert to FormattedError format
|
|
181
|
+
const errors = failures.slice(0, MAX_ERRORS_IN_ARRAY).map((f) => {
|
|
182
|
+
const testId = `${f.testClass}.${f.testMethod}`;
|
|
183
|
+
let message = f.message ?? 'Test failed';
|
|
184
|
+
// Include exception type if available
|
|
185
|
+
if (f.exceptionType && !message.includes(f.exceptionType)) {
|
|
186
|
+
message = `${f.exceptionType}: ${message}`;
|
|
187
|
+
}
|
|
188
|
+
// Add stack trace preview (first line only)
|
|
189
|
+
if (f.stackTrace && f.stackTrace.length > 0) {
|
|
190
|
+
message += `\n${f.stackTrace[0]}`;
|
|
191
|
+
}
|
|
192
|
+
return {
|
|
193
|
+
file: f.file ?? `${f.testClass.replaceAll('.', '/')}.java`,
|
|
194
|
+
line: f.line,
|
|
195
|
+
message: `Test: ${testId}\n${message}`,
|
|
196
|
+
};
|
|
197
|
+
});
|
|
198
|
+
const failureCount = totalFailures ?? failures.filter((f) => f.errorType === 'FAILURE').length;
|
|
199
|
+
const errorCount = totalErrors ?? failures.filter((f) => f.errorType === 'ERROR').length;
|
|
200
|
+
const summary = `${failureCount + errorCount} test failure(s): ${failureCount} failures, ${errorCount} errors`;
|
|
201
|
+
// Generate guidance
|
|
202
|
+
const guidance = failures.length > 0
|
|
203
|
+
? `Fix test failures. Run ${command ?? 'mvn test'} to see full details.`
|
|
204
|
+
: undefined;
|
|
205
|
+
// Create error summary
|
|
206
|
+
const errorSummary = errors.length > 0
|
|
207
|
+
? errors.map((e, i) => `[Test ${i + 1}/${errors.length}] ${e.file}:${e.line ?? '?'}\n${e.message}`).join('\n\n')
|
|
208
|
+
: undefined;
|
|
209
|
+
return {
|
|
210
|
+
summary,
|
|
211
|
+
totalErrors: failures.length,
|
|
212
|
+
errors,
|
|
213
|
+
guidance,
|
|
214
|
+
errorSummary,
|
|
215
|
+
metadata: {
|
|
216
|
+
detection: {
|
|
217
|
+
extractor: 'maven-surefire',
|
|
218
|
+
confidence: detection.confidence,
|
|
219
|
+
patterns: detection.patterns,
|
|
220
|
+
reason: detection.reason,
|
|
221
|
+
},
|
|
222
|
+
confidence: 95,
|
|
223
|
+
completeness: 90,
|
|
224
|
+
issues: failures.length > 20 ? ['Many test failures - output may be truncated'] : [],
|
|
225
|
+
},
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
//# sourceMappingURL=maven-surefire-extractor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"maven-surefire-extractor.js","sourceRoot":"","sources":["../src/maven-surefire-extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smart-extractor.d.ts","sourceRoot":"","sources":["../src/smart-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"smart-extractor.d.ts","sourceRoot":"","sources":["../src/smart-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAcvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,GAAG,oBAAoB,CAsMzF"}
|
package/dist/smart-extractor.js
CHANGED
|
@@ -13,6 +13,8 @@ import { extractJUnitErrors } from './junit-extractor.js';
|
|
|
13
13
|
import { extractMochaErrors } from './mocha-extractor.js';
|
|
14
14
|
import { extractJasmineErrors } from './jasmine-extractor.js';
|
|
15
15
|
import { extractPlaywrightErrors } from './playwright-extractor.js';
|
|
16
|
+
import { detectMavenCheckstyle, extractMavenCheckstyle } from './maven-checkstyle-extractor.js';
|
|
17
|
+
import { detectMavenSurefire, extractMavenSurefire } from './maven-surefire-extractor.js';
|
|
16
18
|
import { extractGenericErrors } from './generic-extractor.js';
|
|
17
19
|
import { stripAnsiCodes } from './utils.js';
|
|
18
20
|
/**
|
|
@@ -94,6 +96,26 @@ export function autoDetectAndExtract(input) {
|
|
|
94
96
|
patterns.push('line:col error/warning format');
|
|
95
97
|
return addDetectionMetadata(result, 'eslint', 90, patterns, 'ESLint error format detected');
|
|
96
98
|
}
|
|
99
|
+
// Maven Checkstyle detection: Check for Checkstyle-specific patterns
|
|
100
|
+
// - "maven-checkstyle-plugin" reference
|
|
101
|
+
// - "Starting audit..." / "Audit done." markers
|
|
102
|
+
// - "[WARN]" or "[WARNING]" with file paths and line numbers
|
|
103
|
+
// - "You have N Checkstyle violations" summary
|
|
104
|
+
const checkstyleDetection = detectMavenCheckstyle(errorSummary);
|
|
105
|
+
if (checkstyleDetection.confidence >= 70) {
|
|
106
|
+
const result = extractMavenCheckstyle(errorSummary);
|
|
107
|
+
return addDetectionMetadata(result, 'maven-checkstyle', checkstyleDetection.confidence, checkstyleDetection.patterns, checkstyleDetection.reason);
|
|
108
|
+
}
|
|
109
|
+
// Maven Surefire/Failsafe detection: Check for Maven test output patterns
|
|
110
|
+
// - "maven-surefire-plugin" or "maven-failsafe-plugin" reference
|
|
111
|
+
// - "Tests run: X, Failures: Y, Errors: Z" summary
|
|
112
|
+
// - "<<< FAILURE!" or "<<< ERROR!" markers
|
|
113
|
+
// - JUnit assertion errors
|
|
114
|
+
const surefireDetection = detectMavenSurefire(errorSummary);
|
|
115
|
+
if (surefireDetection.confidence >= 70) {
|
|
116
|
+
const result = extractMavenSurefire(errorSummary);
|
|
117
|
+
return addDetectionMetadata(result, 'maven-surefire', surefireDetection.confidence, surefireDetection.patterns, surefireDetection.reason);
|
|
118
|
+
}
|
|
97
119
|
// Vitest priority detection: Check for "RUN v" pattern (100% unique to vitest)
|
|
98
120
|
// CRITICAL: Must check BEFORE Jest to prevent false positives
|
|
99
121
|
// Jest's loose ● detection can match test names that mention Jest patterns
|
|
@@ -103,6 +125,7 @@ export function autoDetectAndExtract(input) {
|
|
|
103
125
|
// eslint-disable-next-line sonarjs/slow-regex -- False positive: regex is anchored and has limited repetition
|
|
104
126
|
if (/^\s*RUN\s+v\d+\.\d+\.\d+/m.test(errorSummary)) {
|
|
105
127
|
const result = extractVitestErrors(errorSummary);
|
|
128
|
+
// NOSONAR: Pattern building is common across extractors, duplication is intentional for clarity
|
|
106
129
|
const patterns = ['RUN v#### version header'];
|
|
107
130
|
if (errorSummary.includes('×'))
|
|
108
131
|
patterns.push('× symbol (U+00D7)');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smart-extractor.js","sourceRoot":"","sources":["../src/smart-extractor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"smart-extractor.js","sourceRoot":"","sources":["../src/smart-extractor.ts"],"names":[],"mappings":"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"}
|