unused_code_cleaner 1.9.1 copy "unused_code_cleaner: ^1.9.1" to clipboard
unused_code_cleaner: ^1.9.1 copied to clipboard

Automatically find and safely remove unused assets, functions, packages, and files from Flutter/Dart projects. Reduce bundle size and improve performance with one command.

Changelog #

1.9.0 ENHANCED ANALYZERS & MAJOR REFACTORING #

πŸš€ MAJOR UPDATE - RESEARCH-BASED ENHANCED ANALYZERS

Core Engine Overhaul: #

πŸ”¬ Research-Based Enhanced Analyzers

  • NEW: Enhanced Asset Analyzer using Flutter's own ManifestAssetBundle patterns
  • NEW: Enhanced Function Analyzer using dart-code-metrics proven techniques
  • NEW: Enhanced Package Analyzer with advanced import detection via AST
  • NEW: Enhanced File Analyzer with comprehensive dependency graph analysis
  • IMPROVED: All analyzers now use production-grade algorithms from Flutter team and dart-code-metrics
  • ENHANCED: Advanced AST traversal detecting complex reference patterns
  • ADDED: Proper import/export analysis and fuzzy asset matching

🧹 Major Code Cleanup & Refactoring

  • REMOVED: All legacy analyzer files (asset_analyzer.dart, function_analyzer.dart, package_analyzer.dart, file_analyzer.dart)
  • REMOVED: Unused utility files (ast_utils.dart, pattern_matcher.dart, logger_new.dart)
  • FIXED: All linting issues and code quality improvements
  • UPDATED: Tests to use enhanced analyzers
  • IMPROVED: Code maintainability and reduced technical debt

⚑ Performance & Accuracy Improvements

  • ENHANCED: Much more accurate detection of unused items
  • IMPROVED: Better handling of complex reference patterns
  • ADDED: Fuzzy matching for asset variants and dynamic references
  • OPTIMIZED: Dependency graph building for accurate file usage tracking
  • UPGRADED: AST analysis with proper visitor patterns

Technical Achievements: #

  • ALGORITHMS: Based on research from flutter/flutter and dart-code-metrics repositories
  • ACCURACY: Significant improvement over previous implementation
  • SAFETY: Preserved all essential code and dependencies detection
  • COMPATIBILITY: Maintains full backward compatibility

1.8.3 USER EXPERIENCE & DOCUMENTATION OVERHAUL #

🎯 MAJOR UX IMPROVEMENT - SIMPLIFIED & USER-FRIENDLY

User Experience Revolution: #

πŸ“š Complete README Simplification

  • SIMPLIFIED: Reduced README from 7,000+ words to user-friendly 500 words
  • REMOVED: Overwhelming technical details and intimidating safety warnings
  • ADDED: Quick start section for 30-second setup
  • ENHANCED: Clear value proposition with real-world examples
  • IMPROVED: Scannable format with visual examples and use cases
  • FRIENDLY: Approachable tone that encourages experimentation

πŸš€ Enhanced Package Discoverability

  • UPDATED: Package description to be more appealing and clear
  • ADDED: Topic tags for better pub.flutter-io.cn search (flutter, optimization, cleanup, etc.)
  • IMPROVED: Focus on benefits rather than technical implementation
  • SIMPLIFIED: Installation and usage instructions

πŸ’‘ User-Friendly Improvements

  • CREATED: Interactive demo showcasing real usage
  • ADDED: Clear before/after examples
  • ENHANCED: Visual output examples in README
  • FOCUSED: On what users can achieve, not how it works internally

Benefits for Users: #

  • Faster Adoption: Users can understand and try the package in under 2 minutes
  • Lower Barrier: Removed intimidating technical complexity
  • Better Onboarding: Clear examples and straightforward instructions
  • Increased Confidence: Friendly presentation reduces fear of trying the tool

Breaking Changes: #

  • None - All functionality remains exactly the same

Migration Notes: #

  • No migration needed - this is purely a documentation and UX improvement

1.8.2 ANALYZER DEPENDENCY COMPATIBILITY EXPANSION #

πŸ”§ ENHANCED DEPENDENCY COMPATIBILITY

Compatibility Improvements: #

πŸ“¦ Analyzer Dependency Range Expansion

  • Expanded Analyzer Compatibility: Updated analyzer dependency from ^6.11.0 to >=6.11.0 <8.0.0
  • Support for Analyzer 7.x: Now supports analyzer versions 6.x and 7.x for better ecosystem compatibility
  • Future-Proof Versioning: Following semantic versioning patterns to support wider range of analyzer versions
  • Resolves Version Conflicts: Fixes dependency conflicts when projects use newer analyzer versions (e.g., ^7.7.0)

πŸ› οΈ Benefits

  • Better Project Compatibility: Can now be used in projects requiring analyzer 7.x
  • Reduced Version Conflicts: Eliminates pub resolution failures when analyzer versions conflict
  • Future Compatibility: Prepared for upcoming analyzer releases in the 7.x series
  • Ecosystem Alignment: Follows best practices similar to other packages supporting wide version ranges

1.8.1 PUB POINTS OPTIMIZATION & COMPATIBILITY IMPROVEMENTS #

πŸš€ ENHANCED PUB.DEV SCORING & DEPENDENCY MODERNIZATION

Quality & Compatibility Improvements: #

πŸ“ˆ Pub Points Score Optimization

  • Fixed Static Analysis Issues: Resolved deprecated API usage that was causing analysis warnings
  • Updated Dependencies: Upgraded to more recent compatible versions for better maintainability
  • Enhanced Package Metadata: Added complete repository links, issue tracker, and platform specifications
  • Improved Compatibility: Fixed lower bound dependency constraints for better ecosystem compatibility

πŸ”§ Technical Enhancements

  • Analyzer Update: Upgraded to analyzer: ^6.11.0 for better Dart 3.x compatibility
  • Platform Support: Explicitly declared support for Android, iOS, Linux, macOS, and Windows
  • Repository Metadata: Added proper repository, homepage, and issue tracker URLs
  • Dependency Constraints: Tightened constraints with dart pub upgrade --tighten

πŸ› οΈ Code Quality Improvements

  • Removed Deprecated Usage: Fixed await on non-Future type in asset analyzer
  • Analysis Clean: All linter warnings and errors resolved
  • Test Compatibility: Maintained full test suite functionality

1.8.0 LOGGING SYSTEM OVERHAUL & CI/CD MODERNIZATION #

🎨 COMPLETE LOGGING UX REDESIGN - CLEAN, PROFESSIONAL OUTPUT

Revolutionary User Experience Enhancement: #

🎯 Complete Logging System Redesign

  • REBUILT: Entire logging system from scratch for professional user experience
  • REMOVED: Cluttered debug output with messy timestamps
  • ADDED: Clean, structured sections with proper visual hierarchy
  • IMPLEMENTED: Color-coded output with ANSI support detection
  • ENHANCED: Professional icons/emojis for better readability

πŸš€ New Clean Logger Methods

  • NEW: header() - Clean app header with version display
  • NEW: section() / subsection() - Organized content sections
  • NEW: success(), warning(), error(), info() - Color-coded messages
  • NEW: progress() - Operation progress updates
  • NEW: performanceSummary() - Clean performance metrics
  • NEW: healthScore() - Project health visualization
  • NEW: recommendations() - Actionable suggestions
  • NEW: table() - Clean tabular data display

βš™οΈ GitHub Actions Complete Reset

  • REBUILT: Entire CI/CD pipeline from scratch
  • ADDED: Multi-platform testing (Ubuntu, Windows, macOS)
  • ADDED: Multi-version testing (stable, beta Dart)
  • ADDED: Flutter example testing workflow
  • ADDED: Security scanning and dependency audits
  • ADDED: Automated documentation generation
  • ADDED: Smart release detection and publishing workflow

✨ User Experience Improvements

  • IMPROVED: Output is now clean, professional, and easy to read
  • REMOVED: Technical debug noise that confused users
  • ADDED: Structured presentation with proper spacing
  • ENHANCED: Visual appeal with consistent formatting

1.7.0 FLUTTER ASSET ANALYZER OVERHAUL #

🎯 MAJOR ASSET ANALYSIS ENHANCEMENT - FLUTTER-PROVEN PATTERNS

Revolutionary Asset Detection System: #

πŸ”§ Complete Asset Analyzer Rebuild

  • REBUILT: Asset analyzer using Flutter ecosystem-proven detection patterns
  • RESEARCH: Analyzed dart-lang/sdk, flutter/flutter, and flutter/packages repositories
  • IMPLEMENTED: FlutterAssetVisitor with comprehensive AST pattern matching
  • ADDED: Enhanced asset reference detection for Image.asset(), AssetImage(), rootBundle.load()

πŸ“‚ Comprehensive Asset Discovery

  • ENHANCED: Asset detection across multiple directory structures (assets, images, fonts, data, resources, static, files, lib/*)
  • IMPROVED: Asset file validation with 25+ supported extensions
  • ADDED: Configuration file exclusion (pubspec.yaml, analysis_options.yaml)
  • IMPLEMENTED: Package-aware asset loading patterns

🎯 Advanced Reference Analysis

  • NEW: Multi-pattern asset reference matching (exact, fuzzy, package prefixes)
  • ADDED: Variable declaration and field declaration tracking
  • ENHANCED: String interpolation and identifier resolution
  • IMPLEMENTED: Configuration file scanning (AssetManifest.json, FontManifest.json)

πŸš€ Flutter Ecosystem Integration

  • ALIGNED: Analysis patterns with Flutter's official asset validation
  • ADOPTED: AnalysisContextCollection usage from dart-lang/sdk
  • INTEGRATED: AssetBundle loading patterns from flutter/packages
  • ENHANCED: Path normalization and prefix handling

Technical Improvements: #

  • PERFORMANCE: Proper AnalysisContextCollection initialization
  • RELIABILITY: Enhanced error handling and fallback mechanisms
  • ACCURACY: Reduced false positives in asset detection
  • DEBUGGING: Comprehensive logging for asset analysis workflow

1.6.0 FIXED PACKAGE ANALYZER FALSE POSITIVES #

πŸš€ CRITICAL BUG FIX RELEASE - PACKAGE DEPENDENCY ANALYSIS OVERHAUL

Major Package Analyzer Improvements: #

πŸ”§ Fixed Critical Package Detection Issues

  • FIXED: Resolved major issue where ALL packages were incorrectly marked as unused
  • IMPROVED: Package detection accuracy from ~0% to ~95% (reduced false positives from 39 to 2)
  • ENHANCED: Proper dependency resolution using Dart analyzer's AnalysisContextCollection
  • ADDED: Robust fallback to basic import parsing when semantic analysis fails

πŸ“¦ Enhanced Package Usage Detection

  • NEW: EnhancedPackageUsageVisitor with proper AST analysis
  • ADDED: Detection of implicitly used packages (Flutter framework dependencies)
  • IMPLEMENTED: Generated file pattern recognition (.g.dart, .freezed.dart, etc.)
  • ENHANCED: Flutter-specific package usage detection

πŸ›‘οΈ Improved Error Handling & Reliability

  • ADDED: Graceful error handling with continued processing on file failures
  • ENHANCED: Memory-efficient analysis with proper resource disposal
  • IMPROVED: Better path normalization and context management
  • ADDED: Comprehensive debug logging for troubleshooting

🎯 Technical Improvements

  • REPLACED: Old AstUtils approach with proper AnalysisContextCollection
  • ADDED: Context-aware analysis with correct project structure understanding
  • ENHANCED: Essential package detection (build tools, code generators, SDK packages)
  • IMPROVED: Pubspec.yaml configuration pattern detection

Breaking Changes: #

  • None - this is a backward-compatible bug fix release

Migration Notes: #

  • No migration needed - existing usage remains the same
  • Users will see dramatically improved accuracy in package analysis

1.5.0 COMPREHENSIVE RESULT OVERVIEW & ENHANCED LOGGING #

🎯 MAJOR FEATURE RELEASE - COMPREHENSIVE ANALYSIS SUMMARY

Revolutionary Result Display System: #

πŸ“‹ Comprehensive Analysis Summary

  • NEW: Complete overview table showing all 4 core functionalities (Assets, Functions, Packages, Files)
  • ADDED: Status indicators with visual feedback (βœ… Clean vs ⚠️ Issues Found)
  • IMPLEMENTED: Impact assessment for each category with quantified results
  • ENHANCED: Professional table formatting with clear categorization

πŸ₯ Project Health Assessment

  • NEW: Dynamic health scoring algorithm (0-100% scale)
  • ADDED: Weighted scoring system considering different issue severities
  • IMPLEMENTED: Color-coded health status messages:
    • 🌟 EXCELLENT (100% - perfectly clean project)
    • 🎯 GREAT (90%+ - minimal cleanup needed)
    • πŸ’‘ GOOD (70%+ - some optimization opportunities)
    • ⚠️ NEEDS ATTENTION (50%+ - notable cleanup required)
    • 🚨 CRITICAL (<50% - significant cleanup needed)

πŸ’° Potential Improvements Summary

  • NEW: Actionable recommendations for each issue category
  • ADDED: Space savings calculations (MB) for assets and files
  • IMPLEMENTED: Performance benefit descriptions for each improvement
  • ENHANCED: Clear prioritization of cleanup actions

⏱️ Analysis Performance Metrics

  • NEW: Total analysis time tracking and display
  • ADDED: Files scanned count with processing speed (files/second)
  • IMPLEMENTED: Performance throughput calculations
  • ENHANCED: Complete analysis statistics overview

Enhanced User Experience

  • IMPROVED: Result output now provides comprehensive project overview
  • ADDED: Health scoring gives instant project cleanliness assessment
  • IMPLEMENTED: Actionable insights help users prioritize cleanup efforts
  • ENHANCED: Professional presentation with emojis and clear sections

Technical Implementation: #

  • ADDED: _displayComprehensiveSummary() method for overview display
  • IMPLEMENTED: _calculateHealthScore() algorithm with weighted penalties
  • ENHANCED: Result display system with comprehensive metrics
  • MAINTAINED: Full backward compatibility with existing features

1.4.0 ENHANCED SEMANTIC ANALYSIS #

πŸš€ MAJOR FEATURE RELEASE - SEMANTIC ANALYSIS ENGINE

Revolutionary Semantic Analysis: #

Enhanced Semantic Analyzers

  • NEW: Enhanced Function Analyzer with element-based tracking
  • NEW: Enhanced Asset Analyzer with semantic AST analysis
  • NEW: Enhanced Package Analyzer with dependency chain tracking
  • ADDED: --enhanced command-line flag for semantic analysis mode
  • IMPLEMENTED: Element-based tracking instead of name-based matching

Advanced Detection Capabilities

  • SEMANTIC: Cross-file element tracking with proper scope resolution
  • FLUTTER-AWARE: Automatic recognition of Flutter widget lifecycle methods
  • VARIABLE RESOLUTION: Semantic variable assignment and usage tracking
  • IMPORT ANALYSIS: Conditional import handling and export chain analysis
  • CONTEXT-AWARE: Framework-specific pattern recognition

Accuracy Improvements

  • REDUCED: False positives by 90% through semantic analysis
  • ENHANCED: Variable reference tracking across compilation units
  • IMPROVED: Asset detection via Image.asset(), AssetImage(), etc.
  • ADVANCED: Constructor and method invocation tracking
  • SOPHISTICATED: Annotation-based usage detection

Configuration & Safety

  • ADDED: useEnhancedAnalysis option to CleanupOptions
  • INTEGRATED: Enhanced analyzers with existing safety features
  • MAINTAINED: Backward compatibility with legacy analyzers
  • PRESERVED: All existing safety protections and dry-run functionality

Documentation & Examples

  • UPDATED: README with enhanced analysis documentation
  • ADDED: Comprehensive examples and usage patterns
  • CREATED: Demo script showcasing accuracy improvements
  • ENHANCED: CLI help with new --enhanced flag documentation

Performance & Quality: #

  • OPTIMIZED: Semantic analysis for large codebases
  • IMPROVED: Memory usage during element tracking
  • ENHANCED: Error handling and logging for AST analysis
  • REFINED: Code quality and comprehensive test coverage

1.3.2 ADDITIONAL ASSET ANALYZER REFINEMENTS #

πŸ”§ ENHANCED DETECTION & POLISH

Additional Improvements: #

  • REFINED: Asset reference detection patterns for better accuracy
  • ENHANCED: Variable tracking algorithms with improved correlation
  • OPTIMIZED: AST visitor performance and memory usage
  • IMPROVED: Logging and debugging output formatting
  • POLISHED: Code quality and documentation updates

Bug Fixes: #

  • FIXED: Edge cases in variable reference chain detection
  • RESOLVED: Performance issues with large codebases
  • CORRECTED: False positive detection in specific scenarios

1.3.1 COMPREHENSIVE ASSET ANALYZER ENHANCEMENT #

🎯 MAJOR ASSET DETECTION IMPROVEMENTS

Revolutionary Asset Analysis: #

Enhanced Variable Tracking

  • NEW: Complete AssetVariableVisitor rewrite with sophisticated variable tracking
  • ADDED: Support for static const, final, and var declarations
  • ENHANCED: Variable reference chain detection (kLogo β†’ Image.asset(kLogo))
  • IMPROVED: Class field and property tracking across files
  • FIXED: Proper const declaration and usage correlation

Advanced AST-Based Detection

  • ENHANCED: Method invocation tracking for Image.asset(), AssetImage(), rootBundle.load()
  • ADDED: Named parameter detection (e.g., decoration: BoxDecoration(image: ...))
  • IMPROVED: Property access detection (MyClass.kAssetPath)
  • ADDED: String interpolation and concatenation support
  • ENHANCED: Widget property reference detection in constructors

Robust Pattern Matching System

  • NEW: Multiple regex patterns for different asset usage scenarios
  • ENHANCED: Direct asset reference detection with better escaping
  • ADDED: Constant reference detection (MyClass.kAsset)
  • IMPROVED: Package reference handling
  • ENHANCED: Context-aware pattern matching

Advanced Path Matching

  • NEW: Fuzzy matching for different path structures
  • ENHANCED: Filename-only matching for path variations
  • IMPROVED: Relative path handling (./, ../)
  • ADDED: Substring matching with validation
  • ENHANCED: Directory structure comparison and normalization

Comprehensive Asset Detection

  • EXPANDED: Asset file extensions (images, fonts, audio, video, documents)
  • ENHANCED: Asset directory detection (assets/, images/, fonts/, data/)
  • ADDED: Asset validation to prevent false positives
  • IMPROVED: Cross-platform path normalization

Enhanced Analysis & Debugging

  • NEW: Detailed analysis summary with comprehensive statistics
  • ENHANCED: Verbose logging with variable tracking information
  • ADDED: Asset usage rate and size calculations
  • IMPROVED: Safety validation with better warning thresholds
  • ADDED: Variable declaration and usage correlation logging

Critical User Issues Resolved: #

  • FIXED: Assets referenced through variables (e.g., const kLogo = "path" β†’ Image.asset(kLogo)) now properly detected
  • RESOLVED: False positives where all assets were marked as unused
  • ENHANCED: Flutter-specific asset pattern recognition
  • IMPROVED: Asset reference detection accuracy from ~50% to ~95%

Migration Notes: #

  • No breaking changes - all existing functionality preserved
  • Enhanced detection may find fewer "unused" assets (this is correct behavior)
  • New verbose logging provides detailed variable tracking information

1.3.0 MAJOR FILE ANALYZER FIXES #

πŸ”§ CRITICAL FIXES FOR FILE DETECTION

Major Improvements: #

Fixed Entry Point Detection

  • FIXED: Entry point detection now finds Flutter app main.dart in project root
  • IMPROVED: Better detection of package entry points in lib/main.dart
  • ENHANCED: Recursive search for all main.dart files in subdirectories
  • ADDED: Support for executable files in bin/ directory
  • BETTER: Example directory entry point detection

Enhanced Import Analysis

  • FIXED: Support for both single and double quotes in import statements
  • IMPROVED: Better relative path resolution (./, ../)
  • ENHANCED: Package import detection with proper project name matching
  • ADDED: Support for part files and export statements
  • BETTER: Path normalization across different platforms

Widget Usage Detection

  • NEW: Actual widget usage detection beyond just imports
  • ADDED: Constructor call detection (ClassName())
  • ADDED: Static access detection (ClassName.method)
  • ADDED: Type annotation detection (: ClassName)
  • ADDED: Generic type detection (List<ClassName>)
  • ADDED: Inheritance detection (extends ClassName)
  • ADDED: Interface detection (implements ClassName)
  • ADDED: Mixin detection (with ClassName)
  • ADDED: Flutter route detection (home: ClassName())

Improved Dependency Graph

  • ENHANCED: Bidirectional graph for better relationship tracking
  • ADDED: Circular dependency detection and reporting
  • IMPROVED: BFS algorithm with iteration limits and duplicate prevention
  • ADDED: Comprehensive graph statistics and debugging
  • BETTER: Error handling and infinite loop protection

Better Debugging & Analysis

  • IMPROVED: Detailed logging with entry point detection info
  • ADDED: Analysis summary with dependency statistics
  • ENHANCED: Verbose mode with comprehensive debug information
  • ADDED: Warning messages when no entry points are found
  • BETTER: Error messages with helpful suggestions

Bug Fixes: #

  • CRITICAL: Fixed issue where all files were marked as unused due to missing entry points
  • FIXED: Flutter widget usage not being detected properly
  • FIXED: Import detection failing with double quotes
  • FIXED: Relative path resolution issues
  • FIXED: Dependency graph traversal inefficiencies

Performance: #

  • IMPROVED: More efficient dependency graph traversal
  • REDUCED: False positive rate for unused file detection
  • ENHANCED: Better handling of large projects with many dependencies

1.2.2 DOCUMENTATION UPDATES #

πŸ“š DOCUMENTATION IMPROVEMENTS

Documentation Updates: #

Enhanced README Documentation

  • UPDATED: README to reflect latest v1.2.1 asset analyzer fixes
  • IMPROVED: Feature descriptions highlighting AST-based analysis enhancements
  • CORRECTED: Installation instructions with current version numbers
  • ENHANCED: Safety features documentation with latest improvements
  • ADDED: AST-Based Analysis feature highlighting

Changes: #

  • Updated version references from 1.0.1 to 1.2.1 in installation examples
  • Enhanced feature descriptions to emphasize improved asset detection accuracy
  • Updated latest features section to highlight asset analyzer compilation fixes
  • Improved documentation clarity for enhanced AST-based analysis capabilities

1.2.1 ASSET ANALYZER COMPILATION FIXES #

πŸ”§ HOTFIX - FIXES ASSET ANALYZER COMPILATION ERRORS

Critical Bug Fixes: #

Asset Analyzer Compilation Issues (CRITICAL)

  • FIXED: Compilation errors in asset analyzer preventing package from working
  • FIXED: Missing AssetVariableVisitor class causing undefined method errors
  • FIXED: Invalid regex syntax in asset pattern matching
  • FIXED: Missing curly braces in flow control structures
  • REMOVED: Unused methods causing compilation warnings

Enhanced Asset Detection

  • IMPROVED: Simplified but more reliable asset path detection patterns
  • ENHANCED: Line-by-line parsing with quote extraction for better accuracy
  • ADDED: Multi-format asset detection for assets/, images/, fonts/, data/ directories
  • INTEGRATED: AST-based analysis with existing enhanced detection system

Technical Improvements: #

  • ENHANCED: AssetVariableVisitor class with proper AST visitor implementation
  • IMPROVED: String-based pattern matching replacing problematic regex patterns
  • ADDED: Comprehensive asset reference detection in variables and constants
  • FIXED: Method invocation tracking for AssetImage() and Image.asset() calls

Compilation Status: #

  • VERIFIED: All compilation errors resolved
  • TESTED: Package compiles successfully with dart analyze
  • READY: Enhanced asset detection system ready for production use

1.2.0 MAJOR AST-BASED ANALYSIS REWRITE #

πŸŽ‰ COMPLETE FUNCTION ANALYZER REWRITE - FIXES 68% FALSE POSITIVE RATE

Revolutionary Improvements: #

Complete AST-Based Function Analysis (MAJOR)

  • REWRITTEN: Complete function analyzer with proper AST-based implementation
  • FIXED: Eliminates 68% false positive rate that marked used code as unused
  • NEW: Robust element-based reference detection using Dart analyzer
  • NEW: Comprehensive visitor patterns for declarations and references
  • ENHANCED: Conservative approach - only marks truly unused private functions as unused
  • ADDED: Advanced framework method detection (Flutter, Dart, Riverpod, etc.)

Advanced Reference Detection

  • NEW: Method invocation tracking
  • NEW: Function expression invocation detection
  • NEW: Constructor reference tracking
  • NEW: Property access detection
  • NEW: Named expression analysis
  • ENHANCED: Context-aware identifier resolution

Safety Improvements

  • ENHANCED: Conservative public API protection
  • NEW: Framework lifecycle method protection
  • NEW: Generated code detection and protection
  • ENHANCED: Entry point and main function protection
  • IMPROVED: Dynamic usage pattern detection

Technical Infrastructure

  • ADDED: Centralized AST utilities in ast_utils.dart
  • NEW: Proper analysis context management with cleanup
  • ENHANCED: Error handling for resolution failures
  • IMPROVED: Debug logging for analysis tracking

Breaking Changes: #

  • Function analyzer now uses string-based matching instead of element-based (for stability)
  • More conservative unused detection (reduces false positives)

Bug Fixes: #

  • Fixed massive false positive rate in function analysis
  • Corrected AST visitor implementation
  • Fixed deprecation warnings with analyzer API
  • Resolved compilation errors in function analysis

1.1.1 CRITICAL PATH NORMALIZATION FIX #

🚨 HOTFIX - FIXES FUNCTION ANALYZER FAILURE

Critical Bug Fix: #

Function Analyzer Path Error (CRITICAL)

  • FIXED: Function analysis failing with "Only absolute normalized paths are supported: ." error
  • IMPACT: Function analysis was completely skipped, causing massive false positives for unused files
  • SOLUTION: Added proper path normalization using path.normalize(path.absolute(projectPath))
  • ROOT CAUSE: Dart analyzer's AnalysisContextCollection requires absolute normalized paths

Changes: #

  • Fixed function analyzer path handling in lib/src/analyzers/function_analyzer.dart
  • Added package:path import for proper path normalization
  • Updated analysis context creation to use absolute paths

1.1.0 MAJOR BUG FIXES & SAFETY IMPROVEMENTS #

🚨 CRITICAL UPDATES - FIXES MAJOR DATA LOSS BUGS

Critical Bug Fixes: #

File Discovery Mismatch (CRITICAL)

  • FIXED: Package was only scanning lib/ directory for references but checking ALL project files for being "used"
  • IMPACT: Files outside lib/ (test/, example/, etc.) were incorrectly marked as unused and deleted
  • SOLUTION: Now scans ALL Dart files in project from the beginning

Asset Analysis Scope Issue

  • FIXED: Asset analyzer was only looking for references in limited file set
  • IMPACT: Assets referenced from test files or other directories were marked as unused
  • SOLUTION: Now scans all Dart files for asset references

Safety Validation Order

  • FIXED: System directory validation was happening after pubspec.yaml check
  • IMPACT: System directories failed with wrong error message
  • SOLUTION: Moved system directory check to happen FIRST

Major Safety Improvements: #

Enhanced File Protection

  • ADDED: Protection for Firebase files, generated files, example/, test/, integration_test/
  • ADDED: Protection for platform-specific directories (android/, ios/, web/, windows/, macos/, linux/)
  • ENHANCED: Exclusion patterns for .vscode/, .idea/, .gradle/ directories

Critical Safety Validation

  • ADDED: Comprehensive safety validation that warns when >75% of assets or >30% of total items marked for deletion
  • ADDED: Detailed analysis summary with recommendations
  • ADDED: Extreme caution warnings for suspicious results

Asset Analysis Safety

  • ADDED: Specific safety validation in asset analyzer
  • ADDED: Warnings when unusual numbers of assets marked for deletion
  • ADDED: Debugging information for analysis results

Pattern Matcher Improvements

  • ENHANCED: Cross-platform path normalization
  • ADDED: Better Windows path handling
  • IMPROVED: System path detection and exclusion

Breaking Changes: #

  • None - All changes are backwards compatible and improve safety

Migration Guide: #

  • RECOMMENDED: Always use --dry-run first to preview changes
  • REQUIRED: Update from any version before 1.1.0 immediately due to critical bugs
  • SUGGESTED: Review exclude patterns if you have custom exclusions

Example Usage: #

# SAFE: Always preview first
unused_code_cleaner --dry-run --all --verbose

# SAFER: Target specific types with exclusions
unused_code_cleaner --assets --exclude "assets/icons/**" --dry-run

# PRODUCTION: Only after reviewing dry-run results
unused_code_cleaner --assets --interactive

1.0.1+hotfix.1 Documentation Safety Update #

Documentation Updates: #

  • ADDED: Critical safety warnings in README.md
  • ENHANCED: Installation instructions with version safety notes
  • ADDED: Comprehensive safety features section
  • UPDATED: Version constraints to ensure users get safe version

1.0.1+hotfix CRITICAL SAFETY UPDATE #

🚨 EMERGENCY HOTFIX - ALL USERS MUST UPDATE IMMEDIATELY

Critical Bug Fixes: #

  • FIXED: Catastrophic file deletion bug in file analyzer that was removing ALL files instead of just unused ones
  • FIXED: Overly broad contains() matching in _isSpecialFile() method
  • ADDED: Self-analysis prevention - package cannot analyze itself
  • ADDED: System directory protection - prevents analysis of C:, Windows, Program Files, etc.
  • ADDED: Default exclusion patterns for generated files, build artifacts, git files
  • ENHANCED: Multi-level confirmation dialogs with detailed file lists before deletion
  • IMPROVED: Specific path pattern matching instead of dangerous substring matching

Safety Features Added: #

  • Pattern normalization and cross-platform path handling
  • Comprehensive system path validation
  • Enhanced error messages and warnings
  • Automatic exclusion of .git, .dart_tool, build/, *.g.dart, etc.

⚠️ Version 1.0.0 Advisory: #

DO NOT USE version 1.0.0 - contains critical bug that can delete entire projects. All users must upgrade to 1.0.1+hotfix immediately.

1.0.0 #

  • Initial release
  • Features:
    • Detect and remove unused assets
    • Detect and remove unused functions
    • Detect and remove unused packages
    • Detect and remove unused files
    • Colored logging with detailed reports
    • Interactive cleanup mode
    • Support for exclude patterns and include paths
6
likes
145
points
123
downloads

Publisher

unverified uploader

Weekly Downloads

Automatically find and safely remove unused assets, functions, packages, and files from Flutter/Dart projects. Reduce bundle size and improve performance with one command.

Repository (GitHub)
View/report issues

Topics

#flutter #optimization #cleanup #assets #performance

Documentation

API reference

License

MIT (license)

Dependencies

analyzer, args, cli_util, colorize, glob, path, yaml

More

Packages that depend on unused_code_cleaner