Updates across all documentation files: CHANGELOG.md: - Add Framework Leak Detection as implemented feature in v0.1.0 - Update test count: 159 → 194 tests across 7 files - Update examples count: 36 → 38 files (29 good + 9 bad) - Remove framework leak from future releases README.md: - Add Framework Leak Detection section in Features - Document supported frameworks: HTTP, ORM/DB, External services - Include examples of Express, Prisma, TypeORM, etc. - Emphasize domain boundary protection ROADMAP.md: - Move Framework Leak Detection from v0.2.0 to v0.1.0 - Update v0.1.0 metrics: 194 tests, 38 examples - Renumber future versions (Entity Exposure now v0.2.0) - Maintain proper version sequence through v1.0.0 CLAUDE.md: - Update project description with framework leak detection - Add to Key features list (5 features total) - Update Guardian capabilities overview TODO.md: - Update current tasks and priorities All documentation now accurately reflects v0.1.0 release with 5 core features: 1. Hardcode Detection 2. Circular Dependency Detection 3. Naming Convention Enforcement 4. Architecture Violations 5. Framework Leak Detection
7.5 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: 90.06% (exceeds 80% target!)
But only 2 test files (Guards, BaseEntity)- Now: 7 test files with 187 tests total
Need tests for:HardcodeDetector (main logic!)✅ 49 tests addedHardcodedValue✅ 28 tests addedFrameworkLeakDetector✅ 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 90.06% (statements)
- All metrics now exceed 80% threshold
- Total tests: 16 → 187 tests
-
✅ Implemented Framework Leak Detection (v0.2.0)
- Created FrameworkLeakDetector with 10 framework categories
- Added FrameworkLeak value object with smart suggestions
- Integrated with AnalyzeProject use case
- Added CLI output formatting
- 28 comprehensive tests with 100% coverage
- Supports ORM, Web Framework, HTTP Client, Validation, DI Container, Logger, Cache, Message Queue, Email, Storage
- Created bad example for documentation
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