analyze method

List<Violation> analyze(
  1. CompilationUnit unit, {
  2. LineInfo? lineInfo,
  3. String? filePath,
})

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;
}