check method

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

Implementation

@override
void check(DcqRegistry registry) {
  final patternStr = configString(ruleConfig, 'return-type-pattern');
  if (patternStr == null || patternStr.isEmpty) return;

  final RegExp pattern;
  try {
    pattern = RegExp(patternStr);
  } on FormatException {
    return;
  }

  void checkDecl(AstNode node, DartType? returnType) {
    if (returnType == null) return;
    final typeName = returnType.getDisplayString();
    if (!pattern.hasMatch(typeName)) return;
    reportAtNode(node);
  }

  registry.addFunctionDeclaration((node) {
    final element = node.declaredFragment?.element;
    if (element == null) return;
    if (_hasUseResult(node.metadata)) return;
    checkDecl(node, element.returnType);
  });

  registry.addMethodDeclaration((node) {
    final element = node.declaredFragment?.element;
    if (element == null) return;
    if (_hasUseResult(node.metadata)) return;
    checkDecl(node, element.returnType);
  });
}