check method
void
check(
- DcqRegistry registry
)
Implementation
@override
void check(DcqRegistry registry) {
registry.addCompilationUnit((node) {
final visitor = _MagicNumberVisitor(
allowed: _parseAllowed(ruleConfig) ?? const [-1, 0, 1],
ignoreInstances: configBool(ruleConfig, 'ignore-instances') ?? false,
);
node.accept(visitor);
final literals = visitor.magicLiterals;
if (literals.isEmpty) return;
if (configBool(ruleConfig, 'allow-only-once') ?? false) {
// Group by numeric value and only report values appearing more than
// once in the file.
final groups = <num, List<AstNode>>{};
for (final entry in literals) {
(groups[entry.value] ??= []).add(entry.node);
}
for (final nodes in groups.values) {
if (nodes.length > 1) {
for (final n in nodes) {
reportAtNode(n);
}
}
}
} else {
for (final entry in literals) {
reportAtNode(entry.node);
}
}
});
}