analyze method
Runs all enabled rules on a compilation unit.
Returns a list of violations found by all rules.
Implementation
List<Violation> analyze(
CompilationUnit unit, {
LineInfo? lineInfo,
String? filePath,
}) {
final violations = <Violation>[];
for (final rule in registry.enabledRules) {
// Check file-level exclusion
if (filePath != null && _isExcluded(rule.id, filePath)) {
continue;
}
try {
final ruleViolations = rule.check(unit, lineInfo: lineInfo);
// Apply severity override from registry
for (final violation in ruleViolations) {
violations.add(_applySettings(rule.id, violation));
}
} catch (e) {
// Report rule execution failure as warning instead of silently swallowing
violations.add(Violation(
ruleId: rule.id,
message: 'Rule analysis failed: ${e.toString().split('\n').first}',
location: SourceRange.zero,
severity: RuleSeverity.warning,
));
}
}
return violations;
}