printDryRunResults method

void printDryRunResults(
  1. AnalysisResult result
)

Print analysis results in dry-run format

Implementation

void printDryRunResults(AnalysisResult result) {
  _printSectionHeader('Analysis Results (Dry Run)');

  if (!result.hasIssues) {
    _printSuccess(
        'No issues found! All dependencies are properly organized.');
    return;
  }

  // Print used dependencies
  if (result.usedDependencies.isNotEmpty) {
    _printSubHeader('${OutputConfig.usedIndicator} Used Dependencies');
    for (final dep in result.usedDependencies) {
      _printDependency(dep, OutputConfig.usedIndicator);
    }
    print('');
  }

  // Print test-only dependencies that need moving to dev_dependencies (over-promoted)
  final overPromoted = result.testOnlyDependencies
      .where((DependencyInfo dep) =>
          dep.section == DependencySection.dependencies)
      .toList();

  if (overPromoted.isNotEmpty) {
    _printSubHeader(
        '${OutputConfig.testOnlyIndicator} Move to dev_dependencies');
    for (final dep in overPromoted) {
      _printDependency(dep, OutputConfig.testOnlyIndicator);
    }
    print('');
  }

  // Print under-promoted dependencies that need moving to dependencies
  final underPromoted = result.testOnlyDependencies
      .where((DependencyInfo dep) =>
          dep.section == DependencySection.devDependencies)
      .toList();

  if (underPromoted.isNotEmpty) {
    _printSubHeader('${OutputConfig.testOnlyIndicator} Move to dependencies');
    for (final dep in underPromoted) {
      _printDependency(dep, OutputConfig.testOnlyIndicator);
    }
    print('');
  }

  // Print unused dependencies
  if (result.unusedDependencies.isNotEmpty) {
    _printSubHeader('${OutputConfig.unusedIndicator} Unused Dependencies');
    for (final dep in result.unusedDependencies) {
      _printDependency(dep, OutputConfig.unusedIndicator);
    }
    print('');
  }

  // Print duplicates
  if (result.duplicates.isNotEmpty) {
    _printSubHeader('${OutputConfig.warningEmoji} Duplicate Dependencies');
    for (final duplicate in result.duplicates) {
      final versionInfo = duplicate.hasVersionConflict
          ? ' (${duplicate.dependenciesVersion} vs ${duplicate.devDependenciesVersion})'
          : '';
      _printWarning(
          '${duplicate.name}$versionInfo - ${duplicate.recommendationMessage}');
    }
    print('');
  }

  // Print missing dependencies
  if (result.missing.isNotEmpty) {
    _printSubHeader(
        '${OutputConfig.errorEmoji} Missing Dependencies (used in code but not declared in pubspec.yaml)');
    for (final dep in result.missing) {
      _printMissingDependency(dep);
    }
    print('');
  }

  // Print summary
  _printSummary(result);
}