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) {
    if (!_isAppMethod(node, 'textField')) return;

    final labelArg = _findNamedArgument(node, 'label');
    final hintArg = _findNamedArgument(node, 'hint');

    // Check if both are missing or empty
    final hasLabel = labelArg is StringLiteral &&
        labelArg.stringValue?.trim().isNotEmpty == true;
    final hasHint = hintArg is StringLiteral &&
        hintArg.stringValue?.trim().isNotEmpty == true;

    if (!hasLabel && hintArg == null) {
      // Neither label nor hint provided
      reporter.atNode(node.methodName, code);
    } else if (!hasLabel && !hasHint) {
      // Both provided but empty
      reporter.atNode(node.methodName, code);
    }
  });
}