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.addImportDirective((node) {
    final uri = node.uri.stringValue;
    if (uri == null) return;
    final element = node.element;
    // Unresolved
    if (element == null) return;

    final importedId = element.importedLibrary?.identifier;
    final fileId = element.library.identifier;

    if (importedId == null) return; // Not focusing on dart: imports

    final importedPackageUri = getPackageUriForAbsoluteImport(importedId);
    final filePackageUri = getPackageUriForAbsoluteImport(fileId);

    if (!uri.contains('src')) return;

    // Other package
    if (importedPackageUri != filePackageUri) return;

    reporter.reportErrorForNode(_code, node);
  });
}