report method

  1. @override
Future<void> report(
  1. Iterable<FileReport> records
)

Implementation

@override
Future<void> report(Iterable<FileReport> records) async {
  if (records.isEmpty) {
    return;
  }

  for (final analysisRecord in records) {
    final lines = <String>[];

    analysisRecord.classes.forEach((source, componentReport) {
      final report = UtilitySelector.componentReport(componentReport);
      final violationLevel = UtilitySelector.componentViolationLevel(report);

      if (reportAll || isReportLevel(violationLevel)) {
        final violations = [
          if (reportAll || _isNeedToReport(report.methodsCount))
            _report(report.methodsCount, 'number of methods'),
        ];
        lines.add(
          '${_colorPens[violationLevel]!(_humanReadableLabel[violationLevel]!.padRight(8))}$source - ${violations.join(', ')}',
        );
      }
    });

    lines.addAll(_reportAboutFunctions(analysisRecord));

    for (final antiPattern in analysisRecord.antiPatternCases) {
      final severity = _designIssuesColor(_designIssues.padRight(8));
      final position =
          '${antiPattern.location.start.line}:${antiPattern.location.start.column}';
      final rule = [antiPattern.ruleId, antiPattern.documentation].join(' ');
      lines.add(
        '$severity${[antiPattern.message, position, rule].join(' : ')}',
      );
    }

    for (final issue in analysisRecord.issues) {
      final severity = _severityColors[issue.severity]!(
        '${issue.severity.toString().substring(0, 1).toUpperCase()}${issue.severity.toString().substring(1)}'
            .padRight(8),
      );
      final position =
          '${issue.location.start.line}:${issue.location.start.column}';
      final rule = [
        issue.ruleId,
        issue.documentation,
      ].join(' ');
      lines.add('$severity${[issue.message, position, rule].join(' : ')}');
    }

    if (lines.isNotEmpty) {
      _output.writeln('${analysisRecord.relativePath}:');
      lines.forEach(_output.writeln);
      _output.writeln('');
    }
  }
}