Skip to main content

Module import_optimizer

Module import_optimizer 

Source
Expand description

Refactoring and modernization helpers. Import optimization for Perl modules

This module analyzes import statements and usage to optimize imports by:

  • Detecting unused imports and symbols
  • Finding duplicate import statements
  • Consolidating imports to reduce clutter
  • Generating optimized import statements

§LSP Workflow Integration

Import optimization operates within the Perl LSP analysis pipeline: Parse → Index → Navigate → Complete → Analyze

  • Parse Stage: Identifies import statements during Perl source analysis
  • Index Stage: Builds symbol index and resolves import dependencies
  • Navigate Stage: Tracks cross-file import dependencies for refactoring
  • Complete Stage: Generates optimized import statements for code actions
  • Analyze Stage: Updates workspace symbols and reference tracking

Critical for maintaining clean imports in enterprise Perl development workflows where large Perl codebases require systematic dependency management.

§Performance

  • Time complexity: O(n) over import statements with O(1) symbol lookups
  • Space complexity: O(n) for import maps and symbol sets (memory bounded)
  • Optimizations: Fast-path parsing and deduplication to keep performance stable
  • Benchmarks: Typically <5ms per file in large workspace scans
  • Large file scaling: Designed to scale across large file sets (50GB PST-style)

§Example

use perl_parser::import_optimizer::ImportOptimizer;
use std::path::Path;

let optimizer = ImportOptimizer::new();
let analysis = optimizer.analyze_file(Path::new("script.pl"))?;
let optimized_imports = optimizer.generate_optimized_imports(&analysis);
println!("{}", optimized_imports);

Structs§

DuplicateImport
A module that is imported multiple times
ImportAnalysis
Result of import analysis containing all detected issues and suggestions
ImportEntry
A single import statement discovered during analysis
ImportOptimizer
Import optimizer for analyzing and optimizing Perl import statements
MissingImport
A symbol that is used but not imported
OrganizationSuggestion
A suggestion for improving import organization
TextEdit
TextEdit for import optimization (local type for byte-offset ranges)
UnusedImport
An import statement containing unused symbols

Enums§

SuggestionPriority
Priority level for organization suggestions