analyzeWithRule method

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

Runs a specific rule by ID.

Implementation

List<Violation> analyzeWithRule(
  String ruleId,
  CompilationUnit unit, {
  LineInfo? lineInfo,
  String? filePath,
}) {
  final rule = registry.get(ruleId);
  if (rule == null) {
    return const [];
  }

  if (!registry.isEnabled(ruleId)) {
    return const [];
  }

  if (filePath != null && _isExcluded(ruleId, filePath)) {
    return const [];
  }

  try {
    final violations = rule.check(unit, lineInfo: lineInfo);
    return violations.map((v) => _applySettings(ruleId, v)).toList();
  } catch (e) {
    // Report rule execution failure as warning
    return [
      Violation(
        ruleId: ruleId,
        message: 'Rule analysis failed: ${e.toString().split('\n').first}',
        location: SourceRange.zero,
        severity: RuleSeverity.warning,
      ),
    ];
  }
}