check method
void
check(
- DcqRegistry registry
)
Implementation
@override
void check(
DcqRegistry registry,
) {
registry.addClassDeclaration((node) {
if (node.abstractKeyword != null) return;
final effectiveClassPattern =
configString(ruleConfig, 'class-name-pattern') ?? '';
if (effectiveClassPattern.isNotEmpty) {
if (!RegExp(
effectiveClassPattern,
).hasMatch(node.namePart.typeName.lexeme)) {
return;
}
}
final effectiveFilePattern =
configString(ruleConfig, 'file-name-pattern') ?? '';
if (effectiveFilePattern.isNotEmpty) {
final path = registry.context.currentUnit?.file.path ?? '';
final fileName = path.split('/').last;
if (!RegExp(effectiveFilePattern).hasMatch(fileName)) return;
}
final superclass = node.extendsClause?.superclass;
if (superclass != null &&
_widgetSuperclasses.contains(superclass.name.lexeme) &&
isFromExpectedPackage(superclass, 'flutter')) {
return;
}
final fieldCount = _countFinalInstanceFields(node);
if (fieldCount < 2) return;
final classBody = node.body;
if (classBody is! BlockClassBody) return;
final hasCopyWith = classBody.members.any(
(member) =>
member is MethodDeclaration && member.name.lexeme == 'copyWith',
);
if (hasCopyWith) return;
reportAtToken(node.namePart.typeName);
});
}