check method

  1. @override
void check(
  1. DcqRegistry registry
)

Implementation

@override
void check(DcqRegistry registry) {
  registry.addCompilationUnit((unit) {
    final collector = _StringCollector(
      configStringList(ruleConfig, 'ignored-invocations') ??
          const ['print', 'debugPrint'],
    );
    unit.accept(collector);

    final candidates = collector.candidates;

    if (configBool(ruleConfig, 'allow-only-once') ?? false) {
      // Group by string value and only flag those appearing 2+ times.
      final counts = <String, List<_StringInfo>>{};
      for (final info in candidates) {
        (counts[info.value] ??= []).add(info);
      }
      for (final entry in counts.entries) {
        if (entry.value.length >= 2) {
          for (final info in entry.value) {
            reportAtNode(info.node);
          }
        }
      }
    } else {
      for (final info in candidates) {
        reportAtNode(info.node);
      }
    }
  });
}