run method
void
run(
- CustomLintResolver resolver,
- ErrorReporter reporter,
- 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: []);
}
}
}
});
}