check method
void
check(
- DcqRegistry registry
)
Implementation
@override
void check(
DcqRegistry registry,
) {
final ignoreEnums = configBool(ruleConfig, 'ignore-enums') ?? false;
registry.addMethodInvocation((node) {
if (node.methodName.name != 'toString') return;
if (node.argumentList.arguments.isNotEmpty) return;
final target = node.target;
if (target == null) return;
final targetType = target.staticType;
if (targetType is! InterfaceType) return;
final elementName = targetType.element.name;
if (elementName == 'Object' || elementName == 'dynamic') return;
if (ignoreEnums && targetType.element is EnumElement) return;
if (!_hasToStringOverride(targetType)) {
reportAtNode(node);
}
});
registry.addStringInterpolation((node) {
for (final element in node.elements) {
if (element is! InterpolationExpression) continue;
final expression = element.expression;
final type = expression.staticType;
if (type is! InterfaceType) continue;
final typeName = type.element.name;
if (typeName == 'Object' || typeName == 'dynamic') continue;
if (typeName == 'String' ||
typeName == 'int' ||
typeName == 'double' ||
typeName == 'num' ||
typeName == 'bool') {
continue;
}
if (ignoreEnums && type.element is EnumElement) continue;
if (!_hasToStringOverride(type)) {
reportAtNode(expression);
}
}
});
}