check method
void
check(
- DcqRegistry registry
)
Implementation
@override
void check(DcqRegistry registry) {
final ignoredInvocations =
configStringList(ruleConfig, 'ignored-invocations') ?? const [];
final ignoredTargets =
configStringList(ruleConfig, 'ignored-targets') ?? const [];
final ignoreLiterals = configBool(ruleConfig, 'ignore-literals') ?? false;
final threshold =
2 + (configInt(ruleConfig, 'allowed-duplicated-chains') ?? 0);
void checkBody(FunctionBody body) {
final collector = _ExpressionCollector(
ignoredInvocations: ignoredInvocations,
ignoredTargets: ignoredTargets,
ignoreLiterals: ignoreLiterals,
);
body.accept(collector);
final reported = <String>{};
for (final entry in collector.expressions.entries) {
if (entry.value.length >= threshold && reported.add(entry.key)) {
for (final node in entry.value.skip(1)) {
reportAtNode(node);
}
}
}
}
registry.addMethodDeclaration((node) {
checkBody(node.body);
});
registry.addFunctionDeclaration((node) {
checkBody(node.functionExpression.body);
});
}