report method
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('');
}
}
}