code-auditor-mcp 1.2.0 → 1.2.1
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/reactAnalyzer.d.ts +14 -0
- package/dist/analyzers/reactAnalyzer.d.ts.map +1 -0
- package/dist/analyzers/reactAnalyzer.js +481 -0
- package/dist/analyzers/reactAnalyzer.js.map +1 -0
- package/dist/auditRunner.d.ts.map +1 -1
- package/dist/auditRunner.js +4 -2
- package/dist/auditRunner.js.map +1 -1
- package/dist/codeIndexDb.d.ts.map +1 -1
- package/dist/codeIndexDb.js +65 -3
- package/dist/codeIndexDb.js.map +1 -1
- package/dist/componentScanner.d.ts +52 -0
- package/dist/componentScanner.d.ts.map +1 -0
- package/dist/componentScanner.js +293 -0
- package/dist/componentScanner.js.map +1 -0
- package/dist/functionScanner.d.ts.map +1 -1
- package/dist/functionScanner.js +125 -0
- package/dist/functionScanner.js.map +1 -1
- package/dist/mcp.js +8 -8
- package/dist/mcp.js.map +1 -1
- package/dist/search/QueryParser.d.ts.map +1 -1
- package/dist/search/QueryParser.js +43 -4
- package/dist/search/QueryParser.js.map +1 -1
- package/dist/types.d.ts +70 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/reactDetection.d.ts +43 -0
- package/dist/utils/reactDetection.d.ts.map +1 -0
- package/dist/utils/reactDetection.js +344 -0
- package/dist/utils/reactDetection.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React Component Analyzer
|
|
3
|
+
* Analyzes React components for best practices, performance issues, and common violations
|
|
4
|
+
*/
|
|
5
|
+
import { AnalyzerDefinition, ReactAnalyzerConfig } from '../types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Default configuration for React analyzer
|
|
8
|
+
*/
|
|
9
|
+
export declare const DEFAULT_REACT_CONFIG: ReactAnalyzerConfig;
|
|
10
|
+
/**
|
|
11
|
+
* React analyzer definition
|
|
12
|
+
*/
|
|
13
|
+
export declare const reactAnalyzer: AnalyzerDefinition;
|
|
14
|
+
//# sourceMappingURL=reactAnalyzer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactAnalyzer.d.ts","sourceRoot":"","sources":["../../src/analyzers/reactAnalyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,kBAAkB,EAGlB,mBAAmB,EAGpB,MAAM,aAAa,CAAC;AAIrB;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,mBAoBlC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,kBAmI3B,CAAC"}
|
|
@@ -0,0 +1,481 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React Component Analyzer
|
|
3
|
+
* Analyzes React components for best practices, performance issues, and common violations
|
|
4
|
+
*/
|
|
5
|
+
import { scanFiles, buildComponentTree } from '../componentScanner.js';
|
|
6
|
+
/**
|
|
7
|
+
* Default configuration for React analyzer
|
|
8
|
+
*/
|
|
9
|
+
export const DEFAULT_REACT_CONFIG = {
|
|
10
|
+
// Component Detection
|
|
11
|
+
detectFunctionalComponents: true,
|
|
12
|
+
detectClassComponents: true,
|
|
13
|
+
detectMemoComponents: true,
|
|
14
|
+
// Quality Checks
|
|
15
|
+
requirePropTypes: false, // TypeScript provides type safety
|
|
16
|
+
requireErrorBoundaries: true,
|
|
17
|
+
checkHooksRules: true,
|
|
18
|
+
maxComponentComplexity: 10,
|
|
19
|
+
// Performance
|
|
20
|
+
checkUnnecessaryRerenders: true,
|
|
21
|
+
requireMemoization: false, // Only suggest, don't require
|
|
22
|
+
// Best Practices
|
|
23
|
+
checkAccessibility: true,
|
|
24
|
+
preventDirectDOMAccess: true,
|
|
25
|
+
requireKeyProps: true
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* React analyzer definition
|
|
29
|
+
*/
|
|
30
|
+
export const reactAnalyzer = {
|
|
31
|
+
name: 'react',
|
|
32
|
+
defaultConfig: DEFAULT_REACT_CONFIG,
|
|
33
|
+
analyze: async (files, config, options, progressCallback) => {
|
|
34
|
+
const startTime = Date.now();
|
|
35
|
+
const violations = [];
|
|
36
|
+
const errors = [];
|
|
37
|
+
try {
|
|
38
|
+
// Filter for React component files
|
|
39
|
+
const reactFiles = files.filter(file => file.endsWith('.tsx') || file.endsWith('.jsx') ||
|
|
40
|
+
(file.endsWith('.ts') || file.endsWith('.js')));
|
|
41
|
+
if (reactFiles.length === 0) {
|
|
42
|
+
return {
|
|
43
|
+
violations: [],
|
|
44
|
+
filesProcessed: 0,
|
|
45
|
+
executionTime: Date.now() - startTime,
|
|
46
|
+
analyzerName: 'react'
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
// Phase 1: Component scanning
|
|
50
|
+
if (progressCallback) {
|
|
51
|
+
progressCallback({
|
|
52
|
+
current: 0,
|
|
53
|
+
total: reactFiles.length,
|
|
54
|
+
analyzer: 'react',
|
|
55
|
+
phase: 'scanning'
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
const scanResults = await scanFiles(reactFiles, {
|
|
59
|
+
includeTests: false,
|
|
60
|
+
includeStories: false,
|
|
61
|
+
extractProps: true,
|
|
62
|
+
extractHooks: config.checkHooksRules,
|
|
63
|
+
extractImports: true,
|
|
64
|
+
detectComplexity: true
|
|
65
|
+
}, (current, total) => {
|
|
66
|
+
if (progressCallback) {
|
|
67
|
+
progressCallback({
|
|
68
|
+
current,
|
|
69
|
+
total,
|
|
70
|
+
analyzer: 'react',
|
|
71
|
+
phase: 'scanning'
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
// Phase 2: Component analysis
|
|
76
|
+
let componentsAnalyzed = 0;
|
|
77
|
+
const totalComponents = scanResults.reduce((sum, r) => sum + r.components.length, 0);
|
|
78
|
+
for (const scanResult of scanResults) {
|
|
79
|
+
// Check for scan errors
|
|
80
|
+
if (scanResult.parseErrors) {
|
|
81
|
+
errors.push({
|
|
82
|
+
file: scanResult.filePath,
|
|
83
|
+
error: scanResult.parseErrors.join(', ')
|
|
84
|
+
});
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
// Analyze each component
|
|
88
|
+
for (const component of scanResult.components) {
|
|
89
|
+
if (progressCallback) {
|
|
90
|
+
progressCallback({
|
|
91
|
+
current: ++componentsAnalyzed,
|
|
92
|
+
total: totalComponents,
|
|
93
|
+
analyzer: 'react',
|
|
94
|
+
phase: 'analyzing',
|
|
95
|
+
file: scanResult.filePath
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
// Run all checks
|
|
99
|
+
violations.push(...analyzeComponent(component, config, scanResult));
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// Phase 3: Cross-component analysis
|
|
103
|
+
if (progressCallback) {
|
|
104
|
+
progressCallback({
|
|
105
|
+
current: totalComponents,
|
|
106
|
+
total: totalComponents,
|
|
107
|
+
analyzer: 'react',
|
|
108
|
+
phase: 'cross-analysis'
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
// Build component dependency tree
|
|
112
|
+
const componentTree = buildComponentTree(scanResults);
|
|
113
|
+
// Check for circular dependencies
|
|
114
|
+
violations.push(...checkCircularDependencies(componentTree));
|
|
115
|
+
// Check for missing error boundaries at app level
|
|
116
|
+
if (config.requireErrorBoundaries) {
|
|
117
|
+
violations.push(...checkErrorBoundaryUsage(scanResults));
|
|
118
|
+
}
|
|
119
|
+
return {
|
|
120
|
+
violations,
|
|
121
|
+
filesProcessed: reactFiles.length,
|
|
122
|
+
executionTime: Date.now() - startTime,
|
|
123
|
+
errors: errors.length > 0 ? errors : undefined,
|
|
124
|
+
analyzerName: 'react',
|
|
125
|
+
metadata: {
|
|
126
|
+
totalComponents,
|
|
127
|
+
componentTypes: getComponentTypeStats(scanResults),
|
|
128
|
+
averageComplexity: calculateAverageComplexity(scanResults)
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
console.error('React analysis failed:', error);
|
|
134
|
+
return {
|
|
135
|
+
violations,
|
|
136
|
+
filesProcessed: files.length,
|
|
137
|
+
executionTime: Date.now() - startTime,
|
|
138
|
+
errors: [{
|
|
139
|
+
file: 'react-analyzer',
|
|
140
|
+
error: error instanceof Error ? error.message : String(error)
|
|
141
|
+
}],
|
|
142
|
+
analyzerName: 'react'
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
/**
|
|
148
|
+
* Analyze a single component for violations
|
|
149
|
+
*/
|
|
150
|
+
function analyzeComponent(component, config, scanResult) {
|
|
151
|
+
const violations = [];
|
|
152
|
+
// Check component complexity
|
|
153
|
+
if (component.complexity && component.complexity > config.maxComponentComplexity) {
|
|
154
|
+
violations.push({
|
|
155
|
+
file: component.filePath,
|
|
156
|
+
line: component.lineNumber,
|
|
157
|
+
severity: 'warning',
|
|
158
|
+
message: `Component '${component.name}' has high complexity (${component.complexity})`,
|
|
159
|
+
componentName: component.name,
|
|
160
|
+
violationType: 'complexity',
|
|
161
|
+
details: {
|
|
162
|
+
currentComplexity: component.complexity,
|
|
163
|
+
maxComplexity: config.maxComponentComplexity
|
|
164
|
+
},
|
|
165
|
+
suggestion: 'Consider breaking this component into smaller, more focused components'
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
// Check hooks rules for functional components
|
|
169
|
+
if (config.checkHooksRules && component.hooks && component.hooks.length > 0) {
|
|
170
|
+
violations.push(...checkHooksRules(component));
|
|
171
|
+
}
|
|
172
|
+
// Check for missing props validation (TypeScript users might skip this)
|
|
173
|
+
if (config.requirePropTypes && !hasPropsValidation(component)) {
|
|
174
|
+
violations.push({
|
|
175
|
+
file: component.filePath,
|
|
176
|
+
line: component.lineNumber,
|
|
177
|
+
severity: 'warning',
|
|
178
|
+
message: `Component '${component.name}' is missing prop type definitions`,
|
|
179
|
+
componentName: component.name,
|
|
180
|
+
violationType: 'missing-props',
|
|
181
|
+
suggestion: 'Add TypeScript interface or PropTypes for component props'
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
// Check for missing error boundary in complex components
|
|
185
|
+
if (config.requireErrorBoundaries && shouldHaveErrorBoundary(component)) {
|
|
186
|
+
violations.push({
|
|
187
|
+
file: component.filePath,
|
|
188
|
+
line: component.lineNumber,
|
|
189
|
+
severity: 'warning',
|
|
190
|
+
message: `Complex component '${component.name}' should be wrapped in an error boundary`,
|
|
191
|
+
componentName: component.name,
|
|
192
|
+
violationType: 'no-error-boundary',
|
|
193
|
+
suggestion: 'Wrap this component in an error boundary to handle runtime errors gracefully'
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
// Check for performance issues
|
|
197
|
+
if (config.checkUnnecessaryRerenders) {
|
|
198
|
+
violations.push(...checkPerformanceIssues(component, config));
|
|
199
|
+
}
|
|
200
|
+
// Check for accessibility issues
|
|
201
|
+
if (config.checkAccessibility && component.jsxElements) {
|
|
202
|
+
violations.push(...checkAccessibility(component));
|
|
203
|
+
}
|
|
204
|
+
// Check for missing keys in lists
|
|
205
|
+
if (config.requireKeyProps && component.jsxElements) {
|
|
206
|
+
violations.push(...checkMissingKeys(component));
|
|
207
|
+
}
|
|
208
|
+
return violations;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Check React hooks rules
|
|
212
|
+
*/
|
|
213
|
+
function checkHooksRules(component) {
|
|
214
|
+
const violations = [];
|
|
215
|
+
if (!component.hooks)
|
|
216
|
+
return violations;
|
|
217
|
+
// Check for hooks called conditionally
|
|
218
|
+
const conditionalHooks = component.hooks.filter(hook => {
|
|
219
|
+
// This is a simplified check - real implementation would need AST analysis
|
|
220
|
+
return hook.line && component.context?.includes('if') &&
|
|
221
|
+
component.context?.includes(hook.name);
|
|
222
|
+
});
|
|
223
|
+
for (const hook of conditionalHooks) {
|
|
224
|
+
violations.push({
|
|
225
|
+
file: component.filePath,
|
|
226
|
+
line: hook.line,
|
|
227
|
+
severity: 'critical',
|
|
228
|
+
message: `Hook '${hook.name}' may be called conditionally`,
|
|
229
|
+
componentName: component.name,
|
|
230
|
+
violationType: 'hooks-violation',
|
|
231
|
+
details: {
|
|
232
|
+
hookName: hook.name,
|
|
233
|
+
rule: 'hooks-conditional'
|
|
234
|
+
},
|
|
235
|
+
suggestion: 'Hooks must be called at the top level of the component, not inside conditions or loops'
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
// Check for custom hooks not starting with 'use'
|
|
239
|
+
const invalidCustomHooks = component.hooks.filter(hook => hook.customHook && !hook.name.startsWith('use'));
|
|
240
|
+
for (const hook of invalidCustomHooks) {
|
|
241
|
+
violations.push({
|
|
242
|
+
file: component.filePath,
|
|
243
|
+
line: hook.line,
|
|
244
|
+
severity: 'warning',
|
|
245
|
+
message: `Custom hook '${hook.name}' should start with 'use'`,
|
|
246
|
+
componentName: component.name,
|
|
247
|
+
violationType: 'hooks-violation',
|
|
248
|
+
details: {
|
|
249
|
+
hookName: hook.name,
|
|
250
|
+
rule: 'hooks-naming'
|
|
251
|
+
},
|
|
252
|
+
suggestion: `Rename to 'use${hook.name.charAt(0).toUpperCase()}${hook.name.slice(1)}'`
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
return violations;
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Check if component has props validation
|
|
259
|
+
*/
|
|
260
|
+
function hasPropsValidation(component) {
|
|
261
|
+
// If TypeScript props are defined, consider it validated
|
|
262
|
+
if (component.props && component.props.length > 0) {
|
|
263
|
+
return true;
|
|
264
|
+
}
|
|
265
|
+
// Could also check for PropTypes usage, but TypeScript is preferred
|
|
266
|
+
return false;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Determine if component should have an error boundary
|
|
270
|
+
*/
|
|
271
|
+
function shouldHaveErrorBoundary(component) {
|
|
272
|
+
// Complex components or components with async operations should have error boundaries
|
|
273
|
+
return (component.complexity && component.complexity > 7) ||
|
|
274
|
+
(component.hooks && component.hooks.some(h => h.name === 'useEffect'));
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Check for performance issues
|
|
278
|
+
*/
|
|
279
|
+
function checkPerformanceIssues(component, config) {
|
|
280
|
+
const violations = [];
|
|
281
|
+
// Check for missing memoization in complex functional components
|
|
282
|
+
if (config.requireMemoization &&
|
|
283
|
+
component.componentType === 'functional' &&
|
|
284
|
+
component.complexity && component.complexity > 5) {
|
|
285
|
+
violations.push({
|
|
286
|
+
file: component.filePath,
|
|
287
|
+
line: component.lineNumber,
|
|
288
|
+
severity: 'suggestion',
|
|
289
|
+
message: `Consider memoizing component '${component.name}' for better performance`,
|
|
290
|
+
componentName: component.name,
|
|
291
|
+
violationType: 'performance',
|
|
292
|
+
details: {
|
|
293
|
+
complexity: component.complexity,
|
|
294
|
+
componentType: component.componentType
|
|
295
|
+
},
|
|
296
|
+
suggestion: `Wrap component with React.memo() or convert to use React.memo`
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
// Check for inline function props (causes re-renders)
|
|
300
|
+
if (component.jsxElements && component.context?.includes('=>') &&
|
|
301
|
+
component.context?.includes('onClick')) {
|
|
302
|
+
violations.push({
|
|
303
|
+
file: component.filePath,
|
|
304
|
+
line: component.lineNumber,
|
|
305
|
+
severity: 'warning',
|
|
306
|
+
message: `Component '${component.name}' may have inline function props causing unnecessary re-renders`,
|
|
307
|
+
componentName: component.name,
|
|
308
|
+
violationType: 'performance',
|
|
309
|
+
suggestion: 'Use useCallback to memoize event handlers passed as props'
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
return violations;
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Check for accessibility issues
|
|
316
|
+
*/
|
|
317
|
+
function checkAccessibility(component) {
|
|
318
|
+
const violations = [];
|
|
319
|
+
if (!component.jsxElements)
|
|
320
|
+
return violations;
|
|
321
|
+
// Check for img without alt
|
|
322
|
+
if (component.jsxElements.includes('img') &&
|
|
323
|
+
!component.context?.includes('alt=')) {
|
|
324
|
+
violations.push({
|
|
325
|
+
file: component.filePath,
|
|
326
|
+
line: component.lineNumber,
|
|
327
|
+
severity: 'warning',
|
|
328
|
+
message: `Component '${component.name}' may have <img> elements without alt attributes`,
|
|
329
|
+
componentName: component.name,
|
|
330
|
+
violationType: 'accessibility',
|
|
331
|
+
suggestion: 'All <img> elements should have descriptive alt attributes for screen readers'
|
|
332
|
+
});
|
|
333
|
+
}
|
|
334
|
+
// Check for click handlers on non-interactive elements
|
|
335
|
+
const nonInteractiveElements = ['div', 'span', 'section'];
|
|
336
|
+
for (const element of nonInteractiveElements) {
|
|
337
|
+
if (component.jsxElements.includes(element) &&
|
|
338
|
+
component.context?.includes(`<${element}`) &&
|
|
339
|
+
component.context?.includes('onClick')) {
|
|
340
|
+
violations.push({
|
|
341
|
+
file: component.filePath,
|
|
342
|
+
line: component.lineNumber,
|
|
343
|
+
severity: 'warning',
|
|
344
|
+
message: `Component '${component.name}' has onClick on non-interactive element <${element}>`,
|
|
345
|
+
componentName: component.name,
|
|
346
|
+
violationType: 'accessibility',
|
|
347
|
+
suggestion: `Use a <button> or add role="button" and tabIndex={0} for keyboard accessibility`
|
|
348
|
+
});
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
return violations;
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* Check for missing keys in list rendering
|
|
355
|
+
*/
|
|
356
|
+
function checkMissingKeys(component) {
|
|
357
|
+
const violations = [];
|
|
358
|
+
// Simple heuristic: if component uses .map() and renders JSX, it should use keys
|
|
359
|
+
if (component.context?.includes('.map(') &&
|
|
360
|
+
component.jsxElements && component.jsxElements.length > 0 &&
|
|
361
|
+
!component.context?.includes('key=')) {
|
|
362
|
+
violations.push({
|
|
363
|
+
file: component.filePath,
|
|
364
|
+
line: component.lineNumber,
|
|
365
|
+
severity: 'warning',
|
|
366
|
+
message: `Component '${component.name}' may be rendering lists without keys`,
|
|
367
|
+
componentName: component.name,
|
|
368
|
+
violationType: 'performance',
|
|
369
|
+
suggestion: 'Add a unique key prop to elements rendered in arrays/lists'
|
|
370
|
+
});
|
|
371
|
+
}
|
|
372
|
+
return violations;
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* Check for circular dependencies between components
|
|
376
|
+
*/
|
|
377
|
+
function checkCircularDependencies(componentTree) {
|
|
378
|
+
const violations = [];
|
|
379
|
+
const visited = new Set();
|
|
380
|
+
const recursionStack = new Set();
|
|
381
|
+
function hasCycle(component, path = []) {
|
|
382
|
+
if (recursionStack.has(component)) {
|
|
383
|
+
return path.concat(component);
|
|
384
|
+
}
|
|
385
|
+
if (visited.has(component)) {
|
|
386
|
+
return null;
|
|
387
|
+
}
|
|
388
|
+
visited.add(component);
|
|
389
|
+
recursionStack.add(component);
|
|
390
|
+
const dependencies = componentTree.get(component);
|
|
391
|
+
if (dependencies) {
|
|
392
|
+
for (const dep of dependencies) {
|
|
393
|
+
const cycle = hasCycle(dep, path.concat(component));
|
|
394
|
+
if (cycle) {
|
|
395
|
+
return cycle;
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
recursionStack.delete(component);
|
|
400
|
+
return null;
|
|
401
|
+
}
|
|
402
|
+
// Check each component for cycles
|
|
403
|
+
for (const [component] of componentTree) {
|
|
404
|
+
const cycle = hasCycle(component);
|
|
405
|
+
if (cycle) {
|
|
406
|
+
violations.push({
|
|
407
|
+
file: 'component-dependencies',
|
|
408
|
+
severity: 'critical',
|
|
409
|
+
message: `Circular dependency detected: ${cycle.join(' → ')}`,
|
|
410
|
+
violationType: 'complexity',
|
|
411
|
+
suggestion: 'Refactor components to remove circular dependencies'
|
|
412
|
+
});
|
|
413
|
+
// Mark all components in cycle as visited to avoid duplicate reports
|
|
414
|
+
cycle.forEach(c => visited.add(c));
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
return violations;
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* Check for proper error boundary usage
|
|
421
|
+
*/
|
|
422
|
+
function checkErrorBoundaryUsage(scanResults) {
|
|
423
|
+
const violations = [];
|
|
424
|
+
// Find all components with error boundaries
|
|
425
|
+
const componentsWithErrorBoundary = new Set();
|
|
426
|
+
for (const result of scanResults) {
|
|
427
|
+
for (const component of result.components) {
|
|
428
|
+
if (component.hasErrorBoundary) {
|
|
429
|
+
componentsWithErrorBoundary.add(component.name);
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
// Check if there's at least one error boundary in the app
|
|
434
|
+
if (componentsWithErrorBoundary.size === 0) {
|
|
435
|
+
const totalComponents = scanResults.reduce((sum, r) => sum + r.components.length, 0);
|
|
436
|
+
if (totalComponents > 10) { // Only warn for apps with significant components
|
|
437
|
+
violations.push({
|
|
438
|
+
file: 'app-level',
|
|
439
|
+
severity: 'warning',
|
|
440
|
+
message: 'No error boundaries found in the application',
|
|
441
|
+
violationType: 'no-error-boundary',
|
|
442
|
+
suggestion: 'Add at least one error boundary component to handle unexpected errors gracefully'
|
|
443
|
+
});
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
return violations;
|
|
447
|
+
}
|
|
448
|
+
/**
|
|
449
|
+
* Get component type statistics
|
|
450
|
+
*/
|
|
451
|
+
function getComponentTypeStats(scanResults) {
|
|
452
|
+
const stats = {
|
|
453
|
+
functional: 0,
|
|
454
|
+
class: 0,
|
|
455
|
+
memo: 0,
|
|
456
|
+
forwardRef: 0
|
|
457
|
+
};
|
|
458
|
+
for (const result of scanResults) {
|
|
459
|
+
for (const component of result.components) {
|
|
460
|
+
stats[component.componentType]++;
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
return stats;
|
|
464
|
+
}
|
|
465
|
+
/**
|
|
466
|
+
* Calculate average component complexity
|
|
467
|
+
*/
|
|
468
|
+
function calculateAverageComplexity(scanResults) {
|
|
469
|
+
let totalComplexity = 0;
|
|
470
|
+
let componentCount = 0;
|
|
471
|
+
for (const result of scanResults) {
|
|
472
|
+
for (const component of result.components) {
|
|
473
|
+
if (component.complexity) {
|
|
474
|
+
totalComplexity += component.complexity;
|
|
475
|
+
componentCount++;
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
return componentCount > 0 ? Math.round(totalComplexity / componentCount * 10) / 10 : 0;
|
|
480
|
+
}
|
|
481
|
+
//# sourceMappingURL=reactAnalyzer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactAnalyzer.js","sourceRoot":"","sources":["../../src/analyzers/reactAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auditRunner.d.ts","sourceRoot":"","sources":["../src/auditRunner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAKnB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"auditRunner.d.ts","sourceRoot":"","sources":["../src/auditRunner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAKnB,MAAM,YAAY,CAAC;AA0BpB;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,kBAAuB;iCAM5B,kBAAkB,KAAG,IAAI;oCAOhB,MAAM,KAAG,OAAO,CAAC,kBAAkB,CAAC;uBAQjD,kBAAkB,KAAG,OAAO,CAAC,WAAW,CAAC;6BA6H1B,WAAW,UAAU,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC;EAU7F;AA8FD;;GAEG;AACH,wBAAsB,QAAQ,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CAGjF;AAED,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/auditRunner.js
CHANGED
|
@@ -12,6 +12,7 @@ import { dryAnalyzer } from './analyzers/dryAnalyzer.js';
|
|
|
12
12
|
// import { securityAnalyzer } from './analyzers/securityAnalyzer.js';
|
|
13
13
|
// import { componentAnalyzer } from './analyzers/componentAnalyzer.js';
|
|
14
14
|
import { dataAccessAnalyzer } from './analyzers/dataAccessAnalyzer.js';
|
|
15
|
+
import { reactAnalyzer } from './analyzers/reactAnalyzer.js';
|
|
15
16
|
/**
|
|
16
17
|
* Default analyzer registry
|
|
17
18
|
*/
|
|
@@ -20,7 +21,8 @@ const DEFAULT_ANALYZERS = {
|
|
|
20
21
|
'dry': dryAnalyzer,
|
|
21
22
|
// 'security': securityAnalyzer,
|
|
22
23
|
// 'component': componentAnalyzer,
|
|
23
|
-
'data-access': dataAccessAnalyzer
|
|
24
|
+
'data-access': dataAccessAnalyzer,
|
|
25
|
+
'react': reactAnalyzer
|
|
24
26
|
};
|
|
25
27
|
/**
|
|
26
28
|
* Create an audit runner with the given options
|
|
@@ -73,7 +75,7 @@ export function createAuditRunner(options = {}) {
|
|
|
73
75
|
phase: 'function-indexing',
|
|
74
76
|
current: i + 1,
|
|
75
77
|
total: scriptFiles.length,
|
|
76
|
-
message: `Collected ${fileFunctions.length}
|
|
78
|
+
message: `Collected ${fileFunctions.length} items from ${scriptFiles[i]}`
|
|
77
79
|
});
|
|
78
80
|
}
|
|
79
81
|
catch (error) {
|
package/dist/auditRunner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auditRunner.js","sourceRoot":"","sources":["../src/auditRunner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,8BAA8B;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,sEAAsE;AACtE,wEAAwE;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"auditRunner.js","sourceRoot":"","sources":["../src/auditRunner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codeIndexDB.d.ts","sourceRoot":"","sources":["../src/codeIndexDB.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAAe,MAAM,YAAY,CAAC;AAWlH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAc;IACrC,OAAO,CAAC,EAAE,CAAO;IACjB,OAAO,CAAC,mBAAmB,CAA6C;IACxE,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,aAAa,CAAS;gBAElB,MAAM,GAAE,MAAiC;IA+FrD,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW;IAO1C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA+BjC,OAAO,CAAC,iBAAiB;IAMzB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IA6B7B;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAkBtB,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,GAAG,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BlF,iBAAiB,CAAC,SAAS,EAAE,CAAC,gBAAgB,GAAG,wBAAwB,CAAC,EAAE,GAAG,OAAO,CAAC;QAC3F,OAAO,EAAE,OAAO,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,KAAK,CAAC;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACrD,CAAC;IA4BF;;;;;OAKG;IACG,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,gBAAgB,GAAG,wBAAwB,CAAC,EAAE,GAAG,OAAO,CAAC;QAChH,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IA0DI,eAAe,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"codeIndexDB.d.ts","sourceRoot":"","sources":["../src/codeIndexDB.ts"],"names":[],"mappings":"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"}
|