check method

  1. @override
void check(
  1. DcqRegistry registry
)

Implementation

@override
void check(
  DcqRegistry registry,
) {
  registry.addClassDeclaration((node) {
    final superclass = node.extendsClause?.superclass;
    if (superclass == null) return;

    if (!_widgetBaseClasses.contains(superclass.name.lexeme)) return;

    final body = node.body;
    if (body is! BlockClassBody) return;
    for (final member in body.members) {
      if (member is! MethodDeclaration) continue;
      if ((configBool(ruleConfig, 'ignore-static') ?? false) &&
          member.isStatic) {
        continue;
      }

      final name = member.name.lexeme;
      if (name.startsWith('_')) continue;
      if (name == 'build') continue;
      if ((configStringList(ruleConfig, 'ignored-names') ?? const [])
          .contains(name)) {
        continue;
      }

      final hasOverride = member.metadata.any(
        (annotation) => annotation.name.name == 'override',
      );
      if (hasOverride) continue;

      reportAtToken(member.name);
    }
  });
}