printReport method

void printReport(
  1. DiagnosticReport report
)

Public method or function.

Implementation

void printReport(DiagnosticReport report) {
  terminal.writeLine('');
  terminal.writeLine('═══════════════════════════════════════════');
  terminal.writeLine('  FireDoctor Diagnostic Report');
  terminal.writeLine('═══════════════════════════════════════════');
  terminal.writeLine('');

  terminal.writeLine('  ┌─ Project');
  terminal.writeLine('  │ Project: ${report.projectName}');
  terminal.writeLine('  │ Path: ${report.projectPath}');
  terminal.writeLine('  └─');

  if (report.healthScore != null) {
    final hs = report.healthScore!;
    terminal.writeLine('');
    terminal.writeLine('  ┌─ Health Score');
    terminal.writeLine('  │ Overall: ${_formatScore(hs.overallScore)}/100');
    terminal.writeLine('  │ Issues: ${hs.totalIssues}');
    terminal.writeLine(
      '  │ Weight: ${hs.totalWeight}/${hs.maxPossibleWeight}',
    );
    terminal.writeLine('  └─');

    terminal.writeLine('');
    terminal.writeLine('  ┌─ Category Scores');
    for (final cat in hs.categoryScores) {
      final bar = _scoreBar(cat.score);
      terminal.writeLine(
        '  │ ${cat.displayName}: ${_formatScore(cat.score)}/100 $bar',
      );
    }
    terminal.writeLine('  └─');

    terminal.writeLine('');
    terminal.writeLine('  ┌─ Priority Breakdown');
    for (final group in PriorityGroup.values) {
      final count = hs.priorityGroups[group]?.length ?? 0;
      if (count > 0) {
        terminal.writeLine('  │ ${group.label}: $count');
      }
    }
    terminal.writeLine('  └─');

    if (hs.recommendations.isNotEmpty) {
      terminal.writeLine('');
      terminal.writeLine('  ┌─ Recommended Next Actions');
      for (var i = 0; i < hs.recommendations.length; i++) {
        final rec = hs.recommendations[i];
        terminal.writeLine('  │ ${i + 1}. ${rec.formatted}');
      }
      terminal.writeLine('  └─');
    }
  }

  terminal.writeLine('');
  terminal.writeLine('  ┌─ Analyzer Results');
  for (final result in report.results) {
    terminal.writeLine('  │ ${result.analyzerName}: ${result.status.label}');
    for (final issue in result.issues) {
      terminal.writeLine(
        '  │   ${issue.severity.emoji} [${issue.code}] ${issue.title}',
      );
    }
  }
  terminal.writeLine('  └─');

  terminal.writeLine('');
  terminal.writeLine('  Score: ${report.score.toStringAsFixed(1)}/100');
  terminal.writeLine('  Status: ${report.passed ? "PASSED" : "FAILED"}');
  terminal.writeLine('');
  terminal.writeLine('  Issues: ${report.totalIssues}');
  terminal.writeLine('  Errors: ${report.totalErrors}');
  terminal.writeLine('  Warnings: ${report.totalWarnings}');
  terminal.writeLine('');
}