prioritize method
Returns a sorted list of PrioritizedGroup for all rules found in result.
Implementation
List<PrioritizedGroup> prioritize(FlutterAnalysisResult result) {
// Group all issues by rule (across all severities).
final map = <String, List<FlutterIssue>>{};
for (final issue in result.allIssues) {
map.putIfAbsent(issue.rule, () => []).add(issue);
}
final groups = map.entries.map((entry) {
final rule = entry.key;
final issues = entry.value;
final meta = RuleRegistry.lookup(rule);
final files = issues
.map((i) => i.file.replaceAll('\\', '/'))
.toSet()
.toList()
..sort();
return PrioritizedGroup(
rule: rule,
occurrenceCount: issues.length,
priority: meta?.priority ?? IssuePriority.unknown,
category: meta?.category ?? IssueCategory.unknown,
description: meta?.description ?? '',
exampleMessage: issues.first.message,
affectedFiles: files,
);
}).toList();
// Sort: priority first (lower sortOrder = higher urgency), then count desc.
groups.sort((a, b) {
final byPriority = a.priority.sortOrder.compareTo(b.priority.sortOrder);
if (byPriority != 0) return byPriority;
return b.occurrenceCount.compareTo(a.occurrenceCount);
});
return groups;
}