run method

  1. @override
void run(
  1. CustomLintResolver resolver,
  2. ErrorReporter reporter,
  3. CustomLintContext context
)

Emits lints for a given file.

run will only be invoked with files respecting filesToAnalyze

Implementation

@override
void run(
  CustomLintResolver resolver,
  ErrorReporter reporter,
  CustomLintContext context,
) {
  context.registry.addMethodInvocation((node) {
    final classDecl = node.thisOrAncestorOfType<ClassDeclaration>();
    final element = classDecl?.declaredElement;
    if (element == null) return;
    if (!_isViewModel(element)) return;

    final methodName = node.methodName.name;
    final target = node.realTarget;

    if (target == null) {
      if (!_bannedTopLevel.contains(methodName)) return;
      if (!_isFlutterSdk(node.methodName.staticElement)) return;
      reporter.atNode(node, _code);
      return;
    }

    if (target is Identifier) {
      final receiverName = target.name;
      if (!_bannedReceivers.contains(receiverName)) return;
      if (!_isFlutterSdk(target.staticElement)) return;
      reporter.atNode(node, _code);
    }
  });
}