RuleConfig.fromMap constructor

RuleConfig.fromMap(
  1. Map<String, dynamic> map
)

Parses configuration from a Map.

Implementation

factory RuleConfig.fromMap(Map<String, dynamic> map) {
  final anteaterConfig = map['anteater'];
  if (anteaterConfig is! Map) {
    return RuleConfig.defaults();
  }

  // Parse exclude patterns
  final excludePatterns = <String>[];
  final excludeList = anteaterConfig['exclude'];
  if (excludeList is List) {
    excludePatterns.addAll(excludeList.map((e) => e.toString()));
  }

  // Parse rule settings
  final ruleSettings = <String, RuleSettings>{};
  final rules = anteaterConfig['rules'];
  if (rules is List) {
    for (final entry in rules) {
      if (entry is String) {
        // Simple enable: - avoid-dynamic
        ruleSettings[entry] = RuleSettings.defaultEnabled;
      } else if (entry is Map) {
        // With options: - avoid-dynamic: { severity: warning }
        for (final ruleEntry in entry.entries) {
          final ruleId = ruleEntry.key.toString();
          final options = ruleEntry.value;
          ruleSettings[ruleId] = _parseRuleSettings(options);
        }
      }
    }
  }

  // Parse metrics thresholds
  final metricsMap = anteaterConfig['metrics'];
  final metrics = metricsMap is Map
      ? MetricsThresholds.fromMap(Map<String, dynamic>.from(metricsMap))
      : const MetricsThresholds();

  return RuleConfig(
    excludePatterns: excludePatterns,
    ruleSettings: ruleSettings,
    metrics: metrics,
  );
}