All notable changes to antipasta will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
-
CLI Threshold Override Features
- Dynamic threshold overrides via command-line arguments
- Three-letter prefix support for metric names (e.g., "cyc" for cyclomatic_complexity)
- Validation for CLI override values and operators
- Enhanced configuration override system (
config_override.py)
-
Comprehensive Test Coverage
- Tests for refactored stats modules
- Config override validation tests
- Metrics utility tests
- Test coverage for all new submodules
- Major Codebase Refactoring - antipasta now meets its own complexity constraints
-
Modularization of Large Files
cli/stats.py(906 lines) → organized submodules undercli/stats/:aggregation/- Directory and module aggregation logiccollection/- Metrics collection and analysisoutput/- Display formatting and output handlingutils.py- Shared utilitiescommand.py- Main command orchestration
cli/config_generate.py(421 lines) →cli/config/config_generate/submodules:main.py- Command entry pointinteractive_prompts.py- User interaction logiclanguage_config.py- Language-specific configurationproject_config.py- Project configuration handlingfile_operations.py- File I/O operationsvalidation.py- Config validation logic
cli/config_view.py(242 lines) →cli/config/config_view/submodules:main.py- Command entry pointdisplay_formats.py- Format handling (JSON, YAML)table_display.py- Table formatting logic
cli/metrics.py(210 lines) →cli/metrics/submodules:metrics.py- Main command logicmetrics_utils_*.py- Specialized utility modules
-
Complexity Reduction Techniques
- Applied Compose Method pattern throughout to reduce cyclomatic complexity
- Extracted complex conditionals into named functions
- Replaced nested structures with dictionary dispatch patterns
- Improved maintainability indices across all modules (target: 50+)
- Reduced maximum function complexity to meet thresholds
-
Architecture Improvements
- Better separation of concerns throughout the codebase
- Enhanced modularity and reusability
- Clear module boundaries and responsibilities
- Consistent patterns across similar modules
-
- Type hint issues throughout the codebase
- Test failures after refactoring
- Import path issues after module reorganization
-
Code Quality Metrics
- All source code now passes antipasta's own complexity checks
- Largest files reduced from 900+ lines to under 310 lines
- Cyclomatic complexity kept within configured thresholds
- Maintainability index improved across all modules
-
Developer Experience
- More intuitive module organization
- Enhanced code readability and maintainability
- Better testability through modular design
- Clearer separation between business logic and presentation
-
Core CLI Commands
antipasta config generate- Interactive configuration file generationantipasta config validate- Configuration file validationantipasta config view- Display configuration in multiple formats (table, JSON, YAML)antipasta metrics- Analyze code metrics for specified filesantipasta stats- Collect and display code metrics statistics with multiple grouping options
-
Metric Analysis
- Cyclomatic Complexity analysis via Radon
- Cognitive Complexity analysis via Complexipy
- Maintainability Index calculation
- Halstead metrics (volume, difficulty, effort, time, bugs)
- Lines of Code metrics (LOC, SLOC, LLOC, comments, blank lines)
-
Configuration System
- YAML-based configuration (
.antipasta.yaml) - Language-specific metric thresholds
- Customizable comparison operators
.gitignoreintegration for file filtering- Ignore patterns support
- YAML-based configuration (
-
Statistics Features
- Overall statistics across all files
- Directory-based grouping with depth control
- Module-based grouping for Python packages
- Multiple output formats (table, JSON, CSV)
- Path display styles (relative, parent, full)
- Metric filtering with prefix shortcuts
-
Developer Experience
- Comprehensive test suite (161+ tests)
- Type hints throughout (Python 3.11+)
- Modern Python packaging with Hatchling
- Detailed error messages and helpful warnings
- Backward compatibility aliases for legacy commands
-
Documentation
- Comprehensive README with examples
- Interactive tutorials in DEMOS/TUTORIAL/
- Detailed release guide (RELEASE.md)
- Configuration examples and best practices
- Built with Click for CLI interface
- Pydantic for configuration validation
- Radon and Complexipy for metric analysis
- Pathspec for gitignore-style pattern matching
- 83% test coverage with pytest
- Terminal UI (TUI) feature deferred to post-1.0.0 release
- Initial release focuses on CLI-first experience
- Currently supports Python code analysis (JS/TS support planned)
For upgrade instructions and more details, see the README.