check method

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

Implementation

@override
void check(DcqRegistry registry) {
  final includeMethods =
      configStringList(ruleConfig, 'include-methods') ?? const [];
  final includeAssertions =
      configStringList(ruleConfig, 'include-assertions') ?? const [];

  void checkCall(String name, ArgumentList args, AstNode node) {
    if (name != 'test' &&
        name != 'testWidgets' &&
        !includeMethods.contains(name)) {
      return;
    }
    if (args.arguments.length < 2) return;

    final callback = args.arguments[1];
    if (callback is! FunctionExpression) return;

    final finder = _AssertionFinder(includeAssertions);
    callback.body.accept(finder);

    if (!finder.found) {
      reportAtNode(node);
    }
  }

  registry.addMethodInvocation((node) {
    checkCall(node.methodName.name, node.argumentList, node);
  });

  registry.addFunctionExpressionInvocation((node) {
    final function = node.function;
    if (function is SimpleIdentifier) {
      checkCall(function.name, node.argumentList, node);
    }
  });
}