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;
// Only run on test files.
if (!isTestFile(resolver.path)) return;
context.registry.addCompilationUnit((unit) {
var hasTestBlock = false;
var hasExpect = false;
void visit(AstNode node) {
if (node is MethodInvocation) {
final name = node.methodName.name;
if (name == 'test' || name == 'testWidgets' || name == 'group') {
hasTestBlock = true;
}
if (name == 'expect' || name == 'expectLater' ||
name == 'expectAsync0' || name == 'expectAsync1' ||
name == 'verify' || name == 'verifyInOrder' ||
name == 'verifyNever') {
hasExpect = true;
}
}
// Short-circuit if we found both.
if (hasTestBlock && hasExpect) return;
node.childEntities.whereType<AstNode>().forEach(visit);
}
visit(unit);
if (hasTestBlock && !hasExpect) {
reporter.atNode(unit, code);
}
});
}