Add @puaros/guardian package v0.1.0 - code quality guardian for vibe coders and enterprise teams. Features: - Hardcode detection (magic numbers, magic strings) - Circular dependency detection - Naming convention enforcement (Clean Architecture) - Architecture violation detection - CLI tool with comprehensive reporting - 159 tests with 80%+ coverage - Smart suggestions for fixes - Built for AI-assisted development Built with Clean Architecture and DDD principles. Works with Claude, GPT, Copilot, Cursor, and any AI coding assistant.
7.0 KiB
TODO - Technical Debt & Improvements
This file tracks technical debt, known issues, and improvements needed in the codebase.
🔴 Critical (Fix ASAP)
Code Quality Issues
Reduce complexity in✅ FIXEDHardcodeDetector.isInExportedConstant()Current: Cyclomatic complexity 32Target: < 15Location:src/infrastructure/analyzers/HardcodeDetector.ts:31Solution: Split into smaller functions (isSingleLineExportConst, findExportConstStart, countUnclosedBraces)- Fixed on: 2025-11-24
Type Safety
-
Fix template expression types✅ FIXEDLocation:src/domain/value-objects/HardcodedValue.ts:103Issue:Invalid type "string | number" of template literal expressionSolution: Convert to string before template usingString(value)- Fixed on: 2025-11-24
-
Fix unknown type in template literals✅ FIXEDLocation:src/infrastructure/scanners/FileScanner.ts:52,66Issue:Invalid type "unknown" of template literal expressionSolution: Convert to string usingString(error)- Fixed on: 2025-11-24
Unused Variables
-
Remove or use constants in HardcodeDetector✅ FIXEDRemoved unused imports:CONTEXT_EXTRACT_SIZE,MIN_STRING_LENGTH,SINGLE_CHAR_LIMIT,SUGGESTION_KEYWORDS- Fixed on: 2024-11-24
-
Fix unused function parameters✅ FIXEDPrefixed unused parameters with underscore:_filePath- Fixed on: 2024-11-24
🟡 Medium Priority
ESLint Warnings
-
Fix unnecessary conditionals✅ FIXEDBaseEntity.ts:34- unnecessary conditional checkValueObject.ts:13- unnecessary conditional check- Fixed on: 2025-11-24
-
Use nullish coalescing (??) instead of OR (||)✅ FIXEDHardcodeDetector.ts:322-324- replaced||with??(3 instances)- Fixed on: 2025-11-24
TypeScript Configuration
- Add test files to tsconfig
- Currently excluded from project service
- Files:
examples/*.ts,tests/**/*.test.ts,vitest.config.ts - Solution: Add to tsconfig include or create separate tsconfig for tests
Repository Pattern
-
Implement actual repository methods✅ NOT APPLICABLEAll methods inBaseRepositoryjust throw errors- BaseRepository was removed from guardian package
- Completed on: 2025-11-24
-
Remove require-await warnings✅ NOT APPLICABLEAll async methods inBaseRepositoryhave no await- BaseRepository was removed from guardian package
- Completed on: 2025-11-24
🟢 Low Priority / Nice to Have
Code Organization
-
Consolidate constants
- Multiple constant files:
shared/constants/index.ts,infrastructure/constants/defaults.ts,domain/constants/suggestions.ts - Consider merging or better organization
- Multiple constant files:
-
Improve Guards class structure
- Current warning: "Unexpected class with only static properties"
- Consider: namespace, functions, or actual class instances
Documentation
-
Add JSDoc comments to public APIs✅ FIXEDanalyzeProject()functionAll exported types and interfacesUse cases- Added comprehensive JSDoc with examples
- Completed on: 2025-11-24
-
Document architectural decisions
- Why CommonJS instead of ESM?
- Why tree-sitter over other parsers?
- Create ADR (Architecture Decision Records) folder
Testing
-
Increase test coverage✅ FIXEDCurrent: 85.71% (target: 80%+)- New: 94.24% (exceeds 80% target!)
But only 2 test files (Guards, BaseEntity)- Now: 4 test files with 93 tests total
Need tests for:HardcodeDetector (main logic!)✅ 49 tests addedHardcodedValue✅ 28 tests added- AnalyzeProject use case (pending)
- CLI commands (pending)
- FileScanner (pending)
- CodeParser (pending)
- Completed on: 2025-11-24
-
Add integration tests
- Test full workflow: scan → parse → detect → report
- Test CLI end-to-end
- Test on real project examples
Performance
-
Profile and optimize HardcodeDetector
- Complex regex operations on large files
- Consider caching parsed results
- Batch processing for multiple files
-
Optimize tree-sitter parsing
- Parse only when needed
- Cache parsed trees
- Parallel processing for large projects
🔵 Future Enhancements
CLI Improvements
-
Add progress bar for large projects
- Show current file being analyzed
- Percentage complete
- Estimated time remaining
-
Add watch mode
guardian check ./src --watch- Re-run on file changes
- Useful during development
-
Add fix mode
guardian fix ./src --interactive- Auto-generate constants files
- Interactive prompts for naming
Configuration
- Support guardian.config.js
- Custom rules configuration
- Exclude patterns
- Severity levels
- See ROADMAP.md v0.5.0
Output Improvements
-
Colorize CLI output
- Use chalk or similar library
- Green for success, red for errors, yellow for warnings
- Better visual hierarchy
-
Group violations by file
- Current: flat list
- Better: group by file with collapsible sections
📝 Notes
Known Limitations
- Exported constants detection - may have false positives/negatives with complex nested structures
- Layer detection - simple string matching, may not work with custom paths
- No incremental analysis - always analyzes entire project (could cache results)
Breaking Changes to Plan
When implementing these, consider semantic versioning:
- Config file format → MAJOR (1.0.0)
- CLI output format changes → MINOR (0.x.0)
- Bug fixes → PATCH (0.0.x)
📝 Recent Updates (2025-11-24)
Completed Tasks
-
✅ Added comprehensive tests for HardcodeDetector (49 tests)
- Magic numbers detection (setTimeout, retries, ports, limits)
- Magic strings detection (URLs, connection strings)
- Exported constants detection
- Allowed values handling
- Context and line numbers
-
✅ Added tests for HardcodedValue (28 tests)
- Constant name suggestions for numbers and strings
- Location suggestions based on context
- Type checking methods
-
✅ Added JSDoc documentation
- Full documentation for
analyzeProject()with examples - Documentation for HardcodeDetector class and methods
- Proper @param and @returns tags
- Full documentation for
-
✅ Fixed ESLint errors
- Changed
||to??(nullish coalescing) - Fixed template literal expressions with String()
- Fixed constant truthiness errors
- Changed
-
✅ Improved test coverage
- From 85.71% to 94.24% (statements)
- All metrics now exceed 80% threshold
- Total tests: 16 → 93 tests
How to use this file:
- Move completed items to CHANGELOG.md
- Create GitHub issues for items you want to work on
- Link issues here with
#123syntax - Keep this file up-to-date with new findings