check method
void
check(
- DcqRegistry registry
)
Implementation
@override
void check(DcqRegistry registry) {
final ignoredParameters =
configStringList(ruleConfig, 'ignored-parameters') ?? const [];
final ignoredArguments =
configStringList(ruleConfig, 'ignored-arguments') ?? const [];
final ignoreInline =
configBool(ruleConfig, 'ignore-inline-functions') ?? false;
void checkArgs(ArgumentList argumentList, Expression node) {
final args = argumentList.arguments;
if (args.length < 2) return;
final seen = <String>{};
for (final arg in args) {
if (arg is NamedExpression &&
ignoredParameters.contains(arg.name.label.name)) {
continue;
}
final source = arg is NamedExpression
? arg.expression.toSource()
: arg.toSource();
if (_isSimpleLiteral(source)) continue;
if (ignoredArguments.contains(source)) continue;
if (ignoreInline && arg is FunctionExpression) continue;
if (ignoreInline &&
arg is NamedExpression &&
arg.expression is FunctionExpression) {
continue;
}
if (!seen.add(source)) {
reportAtNode(node);
return;
}
}
}
registry.addMethodInvocation((node) {
checkArgs(node.argumentList, node);
});
registry.addFunctionExpressionInvocation((node) {
checkArgs(node.argumentList, node);
});
registry.addInstanceCreationExpression((node) {
checkArgs(node.argumentList, node);
});
}