run method

  1. @override
void run(
  1. CustomLintResolver resolver,
  2. DiagnosticReporter 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,
  DiagnosticReporter reporter,
  CustomLintContext context,
) {
  if (isGeneratedFile(resolver.path)) return;
  if (!RigidConfig.forFile(resolver.path).isEnabled(code.name)) return;

  context.registry.addMethodInvocation((node) {
    if (node.methodName.name != 'setState') return;

    // Type-resolve: is the receiver a State<T>?
    final targetType = node.realTarget?.staticType;
    if (targetType != null) {
      if (!FlutterTypes.state.isAssignableFromType(targetType)) return;
    }
    // If no target (implicit this), we're inside a State class — still flag.

    reporter.atNode(node.methodName, code);
  });
}