check method
void
check(
- DcqRegistry registry
)
Implementation
@override
void check(
DcqRegistry registry,
) {
registry.addCompilationUnit((node) {
final widgetClasses = <ClassDeclaration>[];
for (final declaration in node.declarations) {
if (declaration is ClassDeclaration) {
final isPrivate = declaration.namePart.typeName.lexeme.startsWith(
'_',
);
if (isPrivate &&
(configBool(ruleConfig, 'ignore-private-widgets') ?? false)) {
continue;
}
if ((configBool(ruleConfig, 'ignore-visible-for-testing') ?? false) &&
declaration.metadata.any(
(a) => a.name.name == 'visibleForTesting',
)) {
continue;
}
final superclass = declaration.extendsClause?.superclass;
if (superclass != null &&
_widgetBaseClasses.contains(superclass.name.lexeme) &&
_isFromExpectedPackageForClass(superclass)) {
widgetClasses.add(declaration);
}
}
}
if (widgetClasses.length < 2) return;
for (final widget in widgetClasses.skip(1)) {
reportAtToken(widget.namePart.typeName);
}
});
}