@vibe-validate/extractors 0.17.0-rc3 → 0.17.0-rc4

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.
Files changed (158) hide show
  1. package/dist/extractor-registry.d.ts +72 -0
  2. package/dist/extractor-registry.d.ts.map +1 -0
  3. package/dist/extractor-registry.js +243 -0
  4. package/dist/extractor-registry.js.map +1 -0
  5. package/dist/extractors/ava/index.d.ts +23 -0
  6. package/dist/extractors/ava/index.d.ts.map +1 -0
  7. package/dist/extractors/ava/index.js +507 -0
  8. package/dist/extractors/ava/index.js.map +1 -0
  9. package/dist/extractors/ava/index.test.d.ts +7 -0
  10. package/dist/extractors/ava/index.test.d.ts.map +1 -0
  11. package/dist/extractors/ava/index.test.js +408 -0
  12. package/dist/extractors/ava/index.test.js.map +1 -0
  13. package/dist/extractors/eslint/index.d.ts +18 -0
  14. package/dist/extractors/eslint/index.d.ts.map +1 -0
  15. package/dist/extractors/eslint/index.js +206 -0
  16. package/dist/extractors/eslint/index.js.map +1 -0
  17. package/dist/extractors/eslint/index.test.d.ts +9 -0
  18. package/dist/extractors/eslint/index.test.d.ts.map +1 -0
  19. package/dist/extractors/eslint/index.test.js +191 -0
  20. package/dist/extractors/eslint/index.test.js.map +1 -0
  21. package/dist/extractors/generic/index.d.ts +30 -0
  22. package/dist/extractors/generic/index.d.ts.map +1 -0
  23. package/dist/extractors/generic/index.js +140 -0
  24. package/dist/extractors/generic/index.js.map +1 -0
  25. package/dist/extractors/generic/index.test.d.ts +7 -0
  26. package/dist/extractors/generic/index.test.d.ts.map +1 -0
  27. package/dist/extractors/generic/index.test.js +61 -0
  28. package/dist/extractors/generic/index.test.js.map +1 -0
  29. package/dist/extractors/jasmine/index.d.ts +17 -0
  30. package/dist/extractors/jasmine/index.d.ts.map +1 -0
  31. package/dist/extractors/jasmine/index.js +242 -0
  32. package/dist/extractors/jasmine/index.js.map +1 -0
  33. package/dist/extractors/jasmine/index.test.d.ts +7 -0
  34. package/dist/extractors/jasmine/index.test.d.ts.map +1 -0
  35. package/dist/extractors/jasmine/index.test.js +318 -0
  36. package/dist/extractors/jasmine/index.test.js.map +1 -0
  37. package/dist/extractors/jest/index.d.ts +17 -0
  38. package/dist/extractors/jest/index.d.ts.map +1 -0
  39. package/dist/extractors/jest/index.js +273 -0
  40. package/dist/extractors/jest/index.js.map +1 -0
  41. package/dist/extractors/jest/index.test.d.ts +9 -0
  42. package/dist/extractors/jest/index.test.d.ts.map +1 -0
  43. package/dist/extractors/jest/index.test.js +338 -0
  44. package/dist/extractors/jest/index.test.js.map +1 -0
  45. package/dist/extractors/junit/index.d.ts +18 -0
  46. package/dist/extractors/junit/index.d.ts.map +1 -0
  47. package/dist/extractors/junit/index.js +259 -0
  48. package/dist/extractors/junit/index.js.map +1 -0
  49. package/dist/extractors/junit/index.test.d.ts +7 -0
  50. package/dist/extractors/junit/index.test.d.ts.map +1 -0
  51. package/dist/extractors/junit/index.test.js +341 -0
  52. package/dist/extractors/junit/index.test.js.map +1 -0
  53. package/dist/extractors/maven-checkstyle/index.d.ts +23 -0
  54. package/dist/extractors/maven-checkstyle/index.d.ts.map +1 -0
  55. package/dist/extractors/maven-checkstyle/index.js +263 -0
  56. package/dist/extractors/maven-checkstyle/index.js.map +1 -0
  57. package/dist/extractors/maven-checkstyle/index.test.d.ts +2 -0
  58. package/dist/extractors/maven-checkstyle/index.test.d.ts.map +1 -0
  59. package/dist/extractors/maven-checkstyle/index.test.js +197 -0
  60. package/dist/extractors/maven-checkstyle/index.test.js.map +1 -0
  61. package/dist/extractors/maven-compiler/index.d.ts +23 -0
  62. package/dist/extractors/maven-compiler/index.d.ts.map +1 -0
  63. package/dist/extractors/maven-compiler/index.js +271 -0
  64. package/dist/extractors/maven-compiler/index.js.map +1 -0
  65. package/dist/extractors/maven-compiler/index.test.d.ts +2 -0
  66. package/dist/extractors/maven-compiler/index.test.d.ts.map +1 -0
  67. package/dist/extractors/maven-compiler/index.test.js +189 -0
  68. package/dist/extractors/maven-compiler/index.test.js.map +1 -0
  69. package/dist/extractors/maven-surefire/index.d.ts +23 -0
  70. package/dist/extractors/maven-surefire/index.d.ts.map +1 -0
  71. package/dist/extractors/maven-surefire/index.js +292 -0
  72. package/dist/extractors/maven-surefire/index.js.map +1 -0
  73. package/dist/extractors/maven-surefire/index.test.d.ts +2 -0
  74. package/dist/extractors/maven-surefire/index.test.d.ts.map +1 -0
  75. package/dist/extractors/maven-surefire/index.test.js +163 -0
  76. package/dist/extractors/maven-surefire/index.test.js.map +1 -0
  77. package/dist/extractors/mocha/index.d.ts +17 -0
  78. package/dist/extractors/mocha/index.d.ts.map +1 -0
  79. package/dist/extractors/mocha/index.js +241 -0
  80. package/dist/extractors/mocha/index.js.map +1 -0
  81. package/dist/extractors/mocha/index.test.d.ts +7 -0
  82. package/dist/extractors/mocha/index.test.d.ts.map +1 -0
  83. package/dist/extractors/mocha/index.test.js +300 -0
  84. package/dist/extractors/mocha/index.test.js.map +1 -0
  85. package/dist/extractors/playwright/index.d.ts +17 -0
  86. package/dist/extractors/playwright/index.d.ts.map +1 -0
  87. package/dist/extractors/playwright/index.js +320 -0
  88. package/dist/extractors/playwright/index.js.map +1 -0
  89. package/dist/extractors/playwright/index.test.d.ts +7 -0
  90. package/dist/extractors/playwright/index.test.d.ts.map +1 -0
  91. package/dist/extractors/playwright/index.test.js +274 -0
  92. package/dist/extractors/playwright/index.test.js.map +1 -0
  93. package/dist/extractors/tap/index.d.ts +23 -0
  94. package/dist/extractors/tap/index.d.ts.map +1 -0
  95. package/dist/extractors/tap/index.js +352 -0
  96. package/dist/extractors/tap/index.js.map +1 -0
  97. package/dist/extractors/tap/index.test.d.ts +7 -0
  98. package/dist/extractors/tap/index.test.d.ts.map +1 -0
  99. package/dist/extractors/tap/index.test.js +100 -0
  100. package/dist/extractors/tap/index.test.js.map +1 -0
  101. package/dist/extractors/typescript/index.d.ts +17 -0
  102. package/dist/extractors/typescript/index.d.ts.map +1 -0
  103. package/dist/extractors/typescript/index.js +150 -0
  104. package/dist/extractors/typescript/index.js.map +1 -0
  105. package/dist/extractors/typescript/index.test.d.ts +9 -0
  106. package/dist/extractors/typescript/index.test.d.ts.map +1 -0
  107. package/dist/extractors/typescript/index.test.js +177 -0
  108. package/dist/extractors/typescript/index.test.js.map +1 -0
  109. package/dist/extractors/vitest/index.d.ts +17 -0
  110. package/dist/extractors/vitest/index.d.ts.map +1 -0
  111. package/dist/extractors/vitest/index.js +564 -0
  112. package/dist/extractors/vitest/index.js.map +1 -0
  113. package/dist/extractors/vitest/index.test.d.ts +9 -0
  114. package/dist/extractors/vitest/index.test.d.ts.map +1 -0
  115. package/dist/extractors/vitest/index.test.js +373 -0
  116. package/dist/extractors/vitest/index.test.js.map +1 -0
  117. package/dist/index.d.ts +27 -13
  118. package/dist/index.d.ts.map +1 -1
  119. package/dist/index.js +27 -13
  120. package/dist/index.js.map +1 -1
  121. package/dist/maven-checkstyle-extractor.d.ts.map +1 -1
  122. package/dist/maven-checkstyle-extractor.js +2 -17
  123. package/dist/maven-checkstyle-extractor.js.map +1 -1
  124. package/dist/maven-compiler-extractor.d.ts +20 -0
  125. package/dist/maven-compiler-extractor.d.ts.map +1 -0
  126. package/dist/maven-compiler-extractor.js +218 -0
  127. package/dist/maven-compiler-extractor.js.map +1 -0
  128. package/dist/maven-utils.d.ts +24 -0
  129. package/dist/maven-utils.d.ts.map +1 -0
  130. package/dist/maven-utils.js +36 -0
  131. package/dist/maven-utils.js.map +1 -0
  132. package/dist/plugin-loader.d.ts +82 -0
  133. package/dist/plugin-loader.d.ts.map +1 -0
  134. package/dist/plugin-loader.js +200 -0
  135. package/dist/plugin-loader.js.map +1 -0
  136. package/dist/sandbox.d.ts +161 -0
  137. package/dist/sandbox.d.ts.map +1 -0
  138. package/dist/sandbox.js +254 -0
  139. package/dist/sandbox.js.map +1 -0
  140. package/dist/sandbox.test.d.ts +8 -0
  141. package/dist/sandbox.test.d.ts.map +1 -0
  142. package/dist/sandbox.test.js +395 -0
  143. package/dist/sandbox.test.js.map +1 -0
  144. package/dist/sandboxed-extractor.d.ts +51 -0
  145. package/dist/sandboxed-extractor.d.ts.map +1 -0
  146. package/dist/sandboxed-extractor.js +172 -0
  147. package/dist/sandboxed-extractor.js.map +1 -0
  148. package/dist/sandboxed-extractor.test.d.ts +5 -0
  149. package/dist/sandboxed-extractor.test.d.ts.map +1 -0
  150. package/dist/sandboxed-extractor.test.js +346 -0
  151. package/dist/sandboxed-extractor.test.js.map +1 -0
  152. package/dist/smart-extractor.d.ts +22 -10
  153. package/dist/smart-extractor.d.ts.map +1 -1
  154. package/dist/smart-extractor.js +116 -186
  155. package/dist/smart-extractor.js.map +1 -1
  156. package/dist/types.d.ts +94 -0
  157. package/dist/types.d.ts.map +1 -1
  158. package/package.json +2 -1
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Maven Checkstyle Extractor Plugin
3
+ *
4
+ * Extracts style violations from Maven Checkstyle plugin output.
5
+ * Supports both output formats generated by maven-checkstyle-plugin.
6
+ *
7
+ * @package @vibe-validate/extractors
8
+ */
9
+ import type { ExtractorPlugin, DetectionResult, ErrorExtractorResult } from '../../types.js';
10
+ /**
11
+ * Detects if output is from Maven Checkstyle
12
+ */
13
+ export declare function detectMavenCheckstyle(output: string): DetectionResult;
14
+ /**
15
+ * Extracts Checkstyle violations from Maven output
16
+ */
17
+ export declare function extractMavenCheckstyle(output: string, command?: string): ErrorExtractorResult;
18
+ /**
19
+ * Maven Checkstyle Extractor Plugin
20
+ */
21
+ declare const mavenCheckstyleExtractor: ExtractorPlugin;
22
+ export default mavenCheckstyleExtractor;
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/extractors/maven-checkstyle/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,oBAAoB,EAErB,MAAM,gBAAgB,CAAC;AAoCxB;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CA+CrE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,GACf,oBAAoB,CAmGtB;AAwCD;;GAEG;AACH,QAAA,MAAM,wBAAwB,EAAE,eAoE/B,CAAC;AAEF,eAAe,wBAAwB,CAAC"}
@@ -0,0 +1,263 @@
1
+ /**
2
+ * Maven Checkstyle Extractor Plugin
3
+ *
4
+ * Extracts style violations from Maven Checkstyle plugin output.
5
+ * Supports both output formats generated by maven-checkstyle-plugin.
6
+ *
7
+ * @package @vibe-validate/extractors
8
+ */
9
+ import { MAX_ERRORS_IN_ARRAY } from '../../result-schema.js';
10
+ import { extractRelativePath } from '../../maven-utils.js';
11
+ const CHECKSTYLE_PATTERNS = {
12
+ // Format 1: [WARN] /absolute/path:line:col: message [Rule]
13
+ // eslint-disable-next-line sonarjs/slow-regex -- Safe: Maven Checkstyle output is structured, limited line length
14
+ warnFormat: /^\[WARN\]\s+([^:]+):(\d+):(\d+):\s+(.+?)\s+\[(\w+)\]$/,
15
+ // Format 2: [WARNING] relative/path:[line,col] (category) Rule: message
16
+ // eslint-disable-next-line sonarjs/slow-regex -- Safe: Maven Checkstyle output is structured, limited line length
17
+ warningFormat: /^\[WARNING\]\s+([^:]+):\[(\d+)(?:,(\d+))?\]\s+\((\w+)\)\s+(\w+):\s+(.+)$/,
18
+ // Summary line: "You have N Checkstyle violations"
19
+ summary: /You have (\d+) Checkstyle violations/,
20
+ };
21
+ /**
22
+ * Detects if output is from Maven Checkstyle
23
+ */
24
+ export function detectMavenCheckstyle(output) {
25
+ const lines = output.split('\n');
26
+ let score = 0;
27
+ const foundPatterns = [];
28
+ // Look for Checkstyle-specific markers
29
+ let hasViolationFormat = false;
30
+ for (const line of lines) {
31
+ if (line.includes('maven-checkstyle-plugin')) {
32
+ score += 40;
33
+ foundPatterns.push('maven-checkstyle-plugin reference');
34
+ }
35
+ if (line.includes('Starting audit')) {
36
+ score += 20;
37
+ foundPatterns.push('Checkstyle audit start marker');
38
+ }
39
+ if (line.includes('Audit done')) {
40
+ score += 20;
41
+ foundPatterns.push('Checkstyle audit complete marker');
42
+ }
43
+ if (CHECKSTYLE_PATTERNS.summary.test(line)) {
44
+ score += 30;
45
+ foundPatterns.push('Checkstyle violation summary');
46
+ }
47
+ if (!hasViolationFormat && (CHECKSTYLE_PATTERNS.warnFormat.test(line) || CHECKSTYLE_PATTERNS.warningFormat.test(line))) {
48
+ score += 10;
49
+ foundPatterns.push('Checkstyle violation format');
50
+ hasViolationFormat = true; // Only count once, but don't break - keep looking for other markers
51
+ }
52
+ }
53
+ // Determine reason based on score
54
+ let reason;
55
+ if (score >= 70) {
56
+ reason = 'Maven Checkstyle plugin output detected';
57
+ }
58
+ else if (score >= 40) {
59
+ reason = 'Possible Maven Checkstyle output';
60
+ }
61
+ else {
62
+ reason = 'Not Maven Checkstyle output';
63
+ }
64
+ return {
65
+ confidence: Math.min(score, 100),
66
+ patterns: foundPatterns,
67
+ reason,
68
+ };
69
+ }
70
+ /**
71
+ * Extracts Checkstyle violations from Maven output
72
+ */
73
+ export function extractMavenCheckstyle(output, command) {
74
+ const detection = detectMavenCheckstyle(output);
75
+ if (detection.confidence < 40) {
76
+ return {
77
+ summary: 'Not Maven Checkstyle output',
78
+ totalErrors: 0,
79
+ errors: [],
80
+ metadata: {
81
+ detection: {
82
+ extractor: 'maven-checkstyle',
83
+ confidence: detection.confidence,
84
+ patterns: detection.patterns,
85
+ reason: detection.reason,
86
+ },
87
+ confidence: detection.confidence,
88
+ completeness: 100,
89
+ issues: [],
90
+ },
91
+ };
92
+ }
93
+ const violations = [];
94
+ const lines = output.split('\n');
95
+ for (const line of lines) {
96
+ // Try Format 1: [WARN] /path:line:col: message [Rule]
97
+ const warnMatch = CHECKSTYLE_PATTERNS.warnFormat.exec(line);
98
+ if (warnMatch) {
99
+ const [, filePath, lineStr, colStr, message, rule] = warnMatch;
100
+ violations.push({
101
+ file: extractRelativePath(filePath),
102
+ line: Number.parseInt(lineStr, 10),
103
+ column: Number.parseInt(colStr, 10),
104
+ message: message.trim(),
105
+ rule: rule.trim(),
106
+ });
107
+ continue;
108
+ }
109
+ // Try Format 2: [WARNING] path:[line,col] (category) Rule: message
110
+ const warningMatch = CHECKSTYLE_PATTERNS.warningFormat.exec(line);
111
+ if (warningMatch) {
112
+ const [, filePath, lineStr, colStr, category, rule, message] = warningMatch;
113
+ violations.push({
114
+ file: filePath.trim(),
115
+ line: Number.parseInt(lineStr, 10),
116
+ column: colStr ? Number.parseInt(colStr, 10) : undefined,
117
+ message: message.trim(),
118
+ rule: rule.trim(),
119
+ category: category.trim(),
120
+ });
121
+ }
122
+ }
123
+ // Remove duplicates (both formats report same violations)
124
+ const uniqueViolations = deduplicateViolations(violations);
125
+ // Convert to FormattedError format
126
+ const errors = uniqueViolations.slice(0, MAX_ERRORS_IN_ARRAY).map((v) => ({
127
+ file: v.file,
128
+ line: v.line,
129
+ column: v.column,
130
+ message: `${v.message} [${v.rule}]`,
131
+ }));
132
+ // Group by file for summary
133
+ const fileGroups = groupByFile(uniqueViolations);
134
+ const summary = `${uniqueViolations.length} Checkstyle violation(s) in ${fileGroups.size} file(s)`;
135
+ // Generate guidance
136
+ const guidance = uniqueViolations.length > 0
137
+ ? `Fix Checkstyle violations. Run ${command ?? 'mvn checkstyle:check'} to see all details.`
138
+ : undefined;
139
+ // Create error summary
140
+ const errorSummary = errors.length > 0
141
+ ? errors.map((e, i) => `[Error ${i + 1}/${errors.length}] ${e.file}:${e.line}\n${e.message}`).join('\n\n')
142
+ : undefined;
143
+ return {
144
+ summary,
145
+ totalErrors: uniqueViolations.length,
146
+ errors,
147
+ guidance,
148
+ errorSummary,
149
+ metadata: {
150
+ detection: {
151
+ extractor: 'maven-checkstyle',
152
+ confidence: detection.confidence,
153
+ patterns: detection.patterns,
154
+ reason: detection.reason,
155
+ },
156
+ confidence: 100,
157
+ completeness: 100,
158
+ issues: [],
159
+ },
160
+ };
161
+ }
162
+ /**
163
+ * Deduplicate violations (both formats report same violations)
164
+ */
165
+ function deduplicateViolations(violations) {
166
+ const seen = new Set();
167
+ const unique = [];
168
+ for (const v of violations) {
169
+ const key = `${v.file}:${v.line}:${v.column}:${v.rule}`;
170
+ if (!seen.has(key)) {
171
+ seen.add(key);
172
+ unique.push(v);
173
+ }
174
+ }
175
+ return unique;
176
+ }
177
+ /**
178
+ * Group violations by file
179
+ */
180
+ function groupByFile(violations) {
181
+ const groups = new Map();
182
+ for (const violation of violations) {
183
+ const file = violation.file || 'unknown';
184
+ if (!groups.has(file)) {
185
+ groups.set(file, []);
186
+ }
187
+ const group = groups.get(file);
188
+ if (group) {
189
+ group.push(violation);
190
+ }
191
+ }
192
+ return groups;
193
+ }
194
+ /**
195
+ * Maven Checkstyle Extractor Plugin
196
+ */
197
+ const mavenCheckstyleExtractor = {
198
+ metadata: {
199
+ name: 'maven-checkstyle',
200
+ version: '1.0.0',
201
+ author: 'Jeff Dutton <jeff@duckcreek.com>',
202
+ description: 'Extracts style violations from Maven Checkstyle plugin output',
203
+ repository: 'https://github.com/jdutton/vibe-validate',
204
+ tags: ['maven', 'java', 'checkstyle', 'style', 'linting'],
205
+ },
206
+ hints: {
207
+ required: ['[WARN]', '[INFO]'],
208
+ anyOf: ['maven-checkstyle-plugin', 'Starting audit', 'Checkstyle violations'],
209
+ },
210
+ priority: 60,
211
+ detect: detectMavenCheckstyle,
212
+ extract: extractMavenCheckstyle,
213
+ samples: [
214
+ {
215
+ name: 'basic-warn-format',
216
+ description: 'Format 1 violations with absolute paths',
217
+ input: `[INFO] Starting audit...
218
+ [WARN] /project/src/main/java/com/example/Foo.java:10:5: Missing Javadoc comment. [JavadocVariable]
219
+ [WARN] /project/src/main/java/com/example/Foo.java:15:1: '{' should be on previous line. [LeftCurly]
220
+ Audit done.`,
221
+ expected: {
222
+ totalErrors: 2,
223
+ errors: [
224
+ {
225
+ file: 'src/main/java/com/example/Foo.java',
226
+ line: 10,
227
+ column: 5,
228
+ message: 'Missing Javadoc comment. [JavadocVariable]',
229
+ },
230
+ ],
231
+ },
232
+ },
233
+ {
234
+ name: 'basic-warning-format',
235
+ description: 'Format 2 violations with relative paths',
236
+ input: `[INFO] Starting audit...
237
+ [WARNING] src/main/java/com/example/Foo.java:[10,5] (javadoc) JavadocVariable: Missing a Javadoc comment.
238
+ [WARNING] src/main/java/com/example/Foo.java:[15,1] (blocks) LeftCurly: '{' at column 1 should be on the previous line.
239
+ Audit done.`,
240
+ expected: {
241
+ totalErrors: 2,
242
+ errors: [
243
+ {
244
+ message: 'Missing a Javadoc comment. [JavadocVariable]',
245
+ file: 'src/main/java/com/example/Foo.java',
246
+ line: 10,
247
+ column: 5,
248
+ },
249
+ ],
250
+ },
251
+ },
252
+ {
253
+ name: 'real-world-output',
254
+ description: 'Real Maven Checkstyle output from test data',
255
+ inputFile: './samples/maven-checkstyle-violations.txt',
256
+ expected: {
257
+ totalErrors: 16,
258
+ },
259
+ },
260
+ ],
261
+ };
262
+ export default mavenCheckstyleExtractor;
263
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/extractors/maven-checkstyle/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../../src/extractors/maven-checkstyle/index.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,197 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import mavenCheckstyleExtractor, { detectMavenCheckstyle, extractMavenCheckstyle } from './index.js';
3
+ import { readFileSync } from 'node:fs';
4
+ import { join, dirname } from 'node:path';
5
+ import { fileURLToPath } from 'node:url';
6
+ const __dirname = dirname(fileURLToPath(import.meta.url));
7
+ describe('Maven Checkstyle Extractor Plugin', () => {
8
+ describe('plugin metadata', () => {
9
+ it('should have correct metadata', () => {
10
+ expect(mavenCheckstyleExtractor.metadata.name).toBe('maven-checkstyle');
11
+ expect(mavenCheckstyleExtractor.metadata.version).toBe('1.0.0');
12
+ expect(mavenCheckstyleExtractor.metadata.tags).toContain('maven');
13
+ expect(mavenCheckstyleExtractor.metadata.tags).toContain('checkstyle');
14
+ });
15
+ it('should have hints for fast filtering', () => {
16
+ expect(mavenCheckstyleExtractor.hints.required).toContain('[WARN]');
17
+ expect(mavenCheckstyleExtractor.hints.required).toContain('[INFO]');
18
+ expect(mavenCheckstyleExtractor.hints.anyOf).toBeDefined();
19
+ });
20
+ it('should have priority defined', () => {
21
+ expect(mavenCheckstyleExtractor.priority).toBe(60);
22
+ });
23
+ it('should have samples', () => {
24
+ expect(mavenCheckstyleExtractor.samples).toBeDefined();
25
+ expect(mavenCheckstyleExtractor.samples.length).toBeGreaterThan(0);
26
+ });
27
+ });
28
+ describe('detectMavenCheckstyle', () => {
29
+ it('should detect Maven Checkstyle output with high confidence', () => {
30
+ const output = `[INFO] Starting audit...
31
+ [WARN] /path/to/File.java:10:5: Missing Javadoc comment. [JavadocVariable]
32
+ Audit done.
33
+ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-checkstyle-plugin:3.3.1:check: You have 5 Checkstyle violations.`;
34
+ const result = detectMavenCheckstyle(output);
35
+ expect(result.confidence).toBeGreaterThanOrEqual(100);
36
+ expect(result.patterns).toContain('maven-checkstyle-plugin reference');
37
+ expect(result.patterns).toContain('Checkstyle audit start marker');
38
+ expect(result.patterns).toContain('Checkstyle audit complete marker');
39
+ expect(result.patterns).toContain('Checkstyle violation summary');
40
+ expect(result.reason).toBe('Maven Checkstyle plugin output detected');
41
+ });
42
+ it('should have low confidence for non-Checkstyle output', () => {
43
+ const output = `Some random build output
44
+ No Checkstyle markers here
45
+ Just normal text`;
46
+ const result = detectMavenCheckstyle(output);
47
+ expect(result.confidence).toBeLessThan(40);
48
+ });
49
+ it('should detect plugin reference for medium confidence', () => {
50
+ const output = `[INFO] Running maven-checkstyle-plugin`;
51
+ const result = detectMavenCheckstyle(output);
52
+ expect(result.confidence).toBeGreaterThanOrEqual(40);
53
+ expect(result.patterns).toContain('maven-checkstyle-plugin reference');
54
+ });
55
+ });
56
+ describe('extractMavenCheckstyle', () => {
57
+ it('should extract errors from [WARN] format', () => {
58
+ const output = `[INFO] Starting audit...
59
+ [WARN] /project/src/main/java/com/example/Foo.java:10:5: Missing Javadoc comment. [JavadocVariable]
60
+ [WARN] /project/src/main/java/com/example/Foo.java:15:1: '{' should be on previous line. [LeftCurly]
61
+ Audit done.`;
62
+ const result = extractMavenCheckstyle(output);
63
+ expect(result.totalErrors).toBe(2);
64
+ expect(result.errors).toHaveLength(2);
65
+ expect(result.errors[0]).toMatchObject({
66
+ file: 'src/main/java/com/example/Foo.java',
67
+ line: 10,
68
+ column: 5,
69
+ message: expect.stringContaining('Missing Javadoc'),
70
+ });
71
+ });
72
+ it('should extract errors from [WARNING] format', () => {
73
+ const output = `[INFO] Starting audit...
74
+ [WARNING] src/main/java/com/example/Foo.java:[10,5] (javadoc) JavadocVariable: Missing a Javadoc comment.
75
+ [WARNING] src/main/java/com/example/Foo.java:[15,1] (blocks) LeftCurly: '{' at column 1 should be on the previous line.
76
+ Audit done.`;
77
+ const result = extractMavenCheckstyle(output);
78
+ expect(result.totalErrors).toBe(2);
79
+ expect(result.errors[0]).toMatchObject({
80
+ file: 'src/main/java/com/example/Foo.java',
81
+ line: 10,
82
+ column: 5,
83
+ });
84
+ });
85
+ it('should deduplicate violations from both formats', () => {
86
+ const output = `[INFO] Starting audit...
87
+ [WARN] /project/src/main/java/Foo.java:10:5: Missing Javadoc. [JavadocVariable]
88
+ Audit done.
89
+ [WARNING] src/main/java/Foo.java:[10,5] (javadoc) JavadocVariable: Missing Javadoc.`;
90
+ const result = extractMavenCheckstyle(output);
91
+ // Should only report once, not twice
92
+ expect(result.totalErrors).toBe(1);
93
+ });
94
+ it('should limit errors to MAX_ERRORS_IN_ARRAY', () => {
95
+ // Create 20 violations
96
+ const violations = Array.from({ length: 20 }, (_, i) => `[WARN] /path/File.java:${i}:5: Error ${i}. [Rule${i}]`).join('\n');
97
+ const output = `[INFO] Starting audit...\n${violations}\nAudit done.`;
98
+ const result = extractMavenCheckstyle(output);
99
+ expect(result.totalErrors).toBe(20); // All counted
100
+ expect(result.errors.length).toBeLessThanOrEqual(10); // But array limited
101
+ });
102
+ it('should provide guidance', () => {
103
+ const output = `[INFO] Starting audit...
104
+ [WARN] /path/Foo.java:1:1: Error. [Rule]
105
+ Audit done.`;
106
+ const result = extractMavenCheckstyle(output);
107
+ expect(result.guidance).toContain('Fix Checkstyle violations');
108
+ expect(result.guidance).toContain('mvn checkstyle:check');
109
+ });
110
+ it('should include custom command in guidance', () => {
111
+ const output = `[INFO] Starting audit...
112
+ [WARN] /path/Foo.java:1:1: Error. [Rule]
113
+ Audit done.`;
114
+ const result = extractMavenCheckstyle(output, 'mvn verify');
115
+ expect(result.guidance).toContain('mvn verify');
116
+ });
117
+ it('should return low-confidence result for non-Checkstyle output', () => {
118
+ const output = `Random text without Checkstyle markers`;
119
+ const result = extractMavenCheckstyle(output);
120
+ expect(result.totalErrors).toBe(0);
121
+ expect(result.errors).toHaveLength(0);
122
+ expect(result.summary).toBe('Not Maven Checkstyle output');
123
+ expect(result.metadata?.detection?.confidence).toBeLessThan(40);
124
+ });
125
+ it('should handle real anonymized output', () => {
126
+ const testFile = join(__dirname, 'samples/maven-checkstyle-violations.txt');
127
+ try {
128
+ const output = readFileSync(testFile, 'utf-8');
129
+ const result = extractMavenCheckstyle(output);
130
+ // Should extract all violations
131
+ expect(result.totalErrors).toBeGreaterThan(15);
132
+ expect(result.errors).toHaveLength(10); // Capped at MAX_ERRORS_IN_ARRAY
133
+ expect(result.summary).toContain('Checkstyle violation');
134
+ expect(result.metadata?.detection?.confidence).toBe(100);
135
+ }
136
+ catch {
137
+ // File doesn't exist yet - skip test
138
+ expect(true).toBe(true);
139
+ }
140
+ });
141
+ it('should include errorSummary when errors exist', () => {
142
+ const output = `[INFO] Starting audit...
143
+ [WARN] /path/Foo.java:10:5: Missing Javadoc. [JavadocVariable]
144
+ Audit done.`;
145
+ const result = extractMavenCheckstyle(output);
146
+ expect(result.errorSummary).toBeDefined();
147
+ expect(result.errorSummary).toContain('[Error 1/1]');
148
+ expect(result.errorSummary).toContain('Foo.java:10');
149
+ });
150
+ });
151
+ describe('plugin samples', () => {
152
+ it('should validate basic-warn-format sample', () => {
153
+ const sample = mavenCheckstyleExtractor.samples.find(s => s.name === 'basic-warn-format');
154
+ expect(sample).toBeDefined();
155
+ if (sample && 'input' in sample) {
156
+ const result = extractMavenCheckstyle(sample.input);
157
+ expect(result.totalErrors).toBe(sample.expected.totalErrors);
158
+ if (sample.expected.errors) {
159
+ expect(result.errors[0]).toMatchObject(sample.expected.errors[0]);
160
+ }
161
+ }
162
+ });
163
+ it('should validate basic-warning-format sample', () => {
164
+ const sample = mavenCheckstyleExtractor.samples.find(s => s.name === 'basic-warning-format');
165
+ expect(sample).toBeDefined();
166
+ if (sample && 'input' in sample) {
167
+ const result = extractMavenCheckstyle(sample.input);
168
+ expect(result.totalErrors).toBe(sample.expected.totalErrors);
169
+ if (sample.expected.errors) {
170
+ expect(result.errors[0]).toMatchObject(sample.expected.errors[0]);
171
+ }
172
+ }
173
+ });
174
+ });
175
+ describe('metadata fields', () => {
176
+ it('should include detection metadata', () => {
177
+ const output = `[INFO] Starting audit...
178
+ [WARN] /path/Foo.java:1:1: Error. [Rule]
179
+ Audit done.`;
180
+ const result = extractMavenCheckstyle(output);
181
+ expect(result.metadata?.detection).toBeDefined();
182
+ expect(result.metadata?.detection?.extractor).toBe('maven-checkstyle');
183
+ expect(result.metadata?.detection?.confidence).toBeGreaterThan(0);
184
+ expect(result.metadata?.detection?.patterns).toBeDefined();
185
+ expect(result.metadata?.detection?.reason).toBeDefined();
186
+ });
187
+ it('should include confidence and completeness', () => {
188
+ const output = `[INFO] Starting audit...
189
+ [WARN] /path/Foo.java:1:1: Error. [Rule]
190
+ Audit done.`;
191
+ const result = extractMavenCheckstyle(output);
192
+ expect(result.metadata?.confidence).toBe(100);
193
+ expect(result.metadata?.completeness).toBe(100);
194
+ });
195
+ });
196
+ });
197
+ //# sourceMappingURL=index.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../src/extractors/maven-checkstyle/index.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Maven Compiler Error Extractor Plugin
3
+ *
4
+ * Extracts Java compilation errors from Maven compiler plugin output.
5
+ * Supports output from `mvn compile` and `mvn test-compile` commands.
6
+ *
7
+ * @package @vibe-validate/extractors
8
+ */
9
+ import type { ExtractorPlugin, DetectionResult, ErrorExtractorResult } from '../../types.js';
10
+ /**
11
+ * Detects if output is from Maven compiler plugin
12
+ */
13
+ export declare function detectMavenCompiler(output: string): DetectionResult;
14
+ /**
15
+ * Extracts compilation errors from Maven compiler output
16
+ */
17
+ export declare function extractMavenCompiler(output: string, command?: string): ErrorExtractorResult;
18
+ /**
19
+ * Maven Compiler Extractor Plugin
20
+ */
21
+ declare const mavenCompilerExtractor: ExtractorPlugin;
22
+ export default mavenCompilerExtractor;
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/extractors/maven-compiler/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,oBAAoB,EAErB,MAAM,gBAAgB,CAAC;AA6CxB;;GAEG;AAEH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CA2DnE;AAED;;GAEG;AAEH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,GACf,oBAAoB,CAyGtB;AAwCD;;GAEG;AACH,QAAA,MAAM,sBAAsB,EAAE,eAmD7B,CAAC;AAEF,eAAe,sBAAsB,CAAC"}