analyzeByCategory method

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

Runs rules by category.

Implementation

List<Violation> analyzeByCategory(
  RuleCategory category,
  CompilationUnit unit, {
  LineInfo? lineInfo,
  String? filePath,
}) {
  final violations = <Violation>[];
  final categoryRules = registry.getRulesByCategory(category);

  for (final rule in categoryRules) {
    if (!registry.isEnabled(rule.id)) {
      continue;
    }

    if (filePath != null && _isExcluded(rule.id, filePath)) {
      continue;
    }

    try {
      final ruleViolations = rule.check(unit, lineInfo: lineInfo);
      for (final violation in ruleViolations) {
        violations.add(_applySettings(rule.id, violation));
      }
    } catch (e) {
      // Report rule execution failure as warning
      violations.add(Violation(
        ruleId: rule.id,
        message: 'Rule analysis failed: ${e.toString().split('\n').first}',
        location: SourceRange.zero,
        severity: RuleSeverity.warning,
      ));
    }
  }

  return violations;
}