run method
void
run(
- CustomLintResolver resolver,
- DiagnosticReporter reporter,
- 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;
if (isTestFile(resolver.path)) return;
context.registry.addMethodInvocation((node) {
// Check for ListView.builder / ListView.separated patterns.
final methodName = node.methodName.name;
final target = node.target;
// ListView.builder(..., itemBuilder: (ctx, i) => Widget(...))
if (target is SimpleIdentifier &&
target.name == 'ListView' &&
(methodName == 'builder' || methodName == 'separated')) {
_checkItemBuilder(node, reporter);
return;
}
// someList.map((item) => Widget(...))
if (methodName == 'map') {
_checkMapCallback(node, reporter);
return;
}
});
// List.generate(n, (i) => Widget(...))
context.registry.addInstanceCreationExpression((node) {
final name = node.constructorName.type.name.lexeme;
if (name == 'List') {
final constructorName = node.constructorName.name?.name;
if (constructorName == 'generate') {
_checkGenerateCallback(node, reporter);
}
}
});
}