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.addArgumentList((node) {
    for (final argument in node.arguments) {
      if (getArguments(argument) &&
          argument.staticParameterElement?.type.getDisplayString(
                withNullability: false,
              ) ==
              'String'
      //  && isStringLiteral(argument)
      ) {
        if (!argument.toSource().contains('S.of(context)') &&
            !argument.toSource().contains('S.current') &&
            !argument.toSource().contains('context.l10n') &&
            !argument.toSource().contains('AppLocalizations.of(context)')) {
          reporter.atToken(
            argument.beginToken,
            _code,
            arguments: [],
            contextMessages: [],
          );
        }
      }
    }
  });
  context.registry.addInstanceCreationExpression((node) {
    final constructorName = node.constructorName;
    if ((constructorName.type.element?.name == 'Text' ||
        constructorName.type.element?.name == 'AutoSizeText')) {
      // Check if there are any arguments
      if (node.argumentList.arguments.isNotEmpty) {
        final firstArg = node.argumentList.arguments.first;

        // Only report issues for non-empty string literals
        if (isStringLiteral(firstArg) &&
            !node.argumentList.toString().contains('S.of(context)') &&
            !node.argumentList.toString().contains('S.current') &&
            !node.argumentList.toString().contains('context.l10n') &&
            !node.argumentList.toString().contains(
              'AppLocalizations.of(context)',
            )) {
          reporter.atNode(node, _code, arguments: []);
        }
      }
    }
  });
}