mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-04-24 13:54:57 +00:00
99 lines
3.0 KiB
Markdown
99 lines
3.0 KiB
Markdown
# ESLint Warnings Summary
|
|
|
|
## Overview
|
|
|
|
The codebase currently has **514 ESLint warnings** (0 errors). These are non-blocking and the build completes successfully.
|
|
|
|
## Warning Categories
|
|
|
|
### 1. TypeScript `any` Types (Most Common)
|
|
- **Count**: ~400+ warnings
|
|
- **Rule**: `@typescript-eslint/no-explicit-any`
|
|
- **Impact**: Low - these are typing warnings that don't affect runtime
|
|
- **Common in**: JSON UI system, dynamic component registry, data binding
|
|
|
|
### 2. Unused Variables/Imports
|
|
- **Count**: ~50 warnings
|
|
- **Rule**: `@typescript-eslint/no-unused-vars`
|
|
- **Impact**: Low - dead code that should be cleaned up during refactoring
|
|
- **Examples**: Unused imports in component files, unused function parameters
|
|
|
|
### 3. React Hook Dependencies
|
|
- **Count**: ~30 warnings
|
|
- **Rule**: `react-hooks/exhaustive-deps`
|
|
- **Impact**: Medium - could cause stale closures or unnecessary re-renders
|
|
- **Examples**: Missing dependencies in `useEffect`, `useCallback`
|
|
|
|
### 4. Fast Refresh Compatibility
|
|
- **Count**: ~10 warnings
|
|
- **Rule**: `react-refresh/only-export-components`
|
|
- **Impact**: Low - affects hot module replacement, not production
|
|
|
|
### 5. Empty Catch Blocks
|
|
- **Count**: 1 (fixed)
|
|
- **Rule**: `no-empty`
|
|
- **Impact**: Low - should log errors for debugging
|
|
|
|
## Why Not Fix All Warnings Now?
|
|
|
|
1. **`any` types are intentional** - The JSON UI system deals with dynamic schemas where typing everything would be overly complex
|
|
2. **Time vs. Value** - Fixing 514 warnings would take hours and provide minimal value
|
|
3. **No build blockers** - All warnings, zero errors
|
|
4. **Best addressed incrementally** - During feature work, clean up warnings in touched files
|
|
|
|
## Recommendation
|
|
|
|
Follow the **"Boy Scout Rule"**: Leave code cleaner than you found it. When working on a file:
|
|
1. Remove unused imports/variables
|
|
2. Add missing React Hook dependencies
|
|
3. Type `any` parameters where practical
|
|
4. Handle errors in catch blocks
|
|
|
|
## Files with Most Warnings
|
|
|
|
1. **JSON UI System** (~200 warnings)
|
|
- `src/lib/json-ui/*` - Dynamic component rendering
|
|
- `src/components/JSON*.tsx` - JSON-driven pages
|
|
|
|
2. **Hooks** (~100 warnings)
|
|
- `src/hooks/**/*.ts` - Custom React hooks
|
|
|
|
3. **Components** (~100 warnings)
|
|
- `src/components/*Designer.tsx` - Designer components
|
|
|
|
4. **Type Definitions** (~50 warnings)
|
|
- `src/types/*.ts` - Type files with `any`
|
|
|
|
## Quick Wins
|
|
|
|
If you want to reduce the count quickly:
|
|
|
|
```bash
|
|
# Remove unused imports automatically
|
|
npm run lint:fix
|
|
```
|
|
|
|
This will auto-fix ~50 warnings (unused imports, simple formatting).
|
|
|
|
## Suppressions to Consider
|
|
|
|
For intentional `any` usage in the JSON UI system:
|
|
|
|
```typescript
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
function renderComponent(schema: any) {
|
|
// Dynamic schema, typing would be counterproductive
|
|
}
|
|
```
|
|
|
|
## Linting in CI/CD
|
|
|
|
Current setup:
|
|
- ✅ Linting runs in CI
|
|
- ✅ Warnings don't block builds
|
|
- ✅ Warnings are visible in logs
|
|
|
|
Future consideration:
|
|
- Add `--max-warnings 600` to fail if warnings spike significantly
|
|
- Track warning count trend over time
|