runWithReporter method

  1. @override
void runWithReporter(
  1. SaropaDiagnosticReporter reporter,
  2. SaropaContext context
)
override

Override this method to implement your lint rule.

Use context to register callbacks for AST node types:

context.addMethodInvocation((node) {
  if (condition) {
    reporter.atNode(node);
  }
});

Implementation

@override
void runWithReporter(
  SaropaDiagnosticReporter reporter,
  SaropaContext context,
) {
  context.addCompilationUnit((CompilationUnit unit) {
    void checkDoc(Comment? doc) {
      if (doc == null) return;
      final String text = doc.tokens.map((Token t) => t.lexeme).join(' ');
      if (_newRef.hasMatch(text)) {
        reporter.atNode(doc, code);
      }
    }

    checkDoc(_libraryDocFromUnit(unit));

    for (final Declaration decl in unit.declarations) {
      _walkDeclarationForDoc(decl, checkDoc);
    }
  });
}