Dart Analyzer Scope · SCANNER-ENG-0012 (2025-12-08)

Goals

Inputs

Pipeline (deterministic, offline)

  1. Normalize pubspec/pubspec.lock:
    • Parse lock entries; map sources: hosted, sdk:flutter, git, path.
    • Emit PURLs (pkg:pub/<name>@<version>) with source metadata (hosted.url, git.sha, path).
    • Enforce sorted components by name.
  2. Package config:
    • Read .dart_tool/package_config.json; map package rootUri/packageUri to build module graph roots.
    • Capture languageVersion and generated timestamp (drop or normalize to 0001-01-01Z for determinism).
  3. Graph builder:
    • Build dependency edges from pubspec.lock -> package_config packages; include sdk:flutter nodes when present.
    • Record sourceType (hosted/git/path/sdk) for provenance.
  4. Signals:
    • dart.sdk requirement from environment.sdk; flutter channel/version when present.
    • AOT snapshot presence flags (aot=true, snapshot=true); no binary parsing.
  5. Outputs:
    • Inventory: list of PURLs + source metadata + checksum if provided in lock (hosted sha256).
    • Graph: edges (package -> dependency) sorted.
    • Signals: dart.sdkConstraint, flutter.sdk, flutter.plugins (names only), buildArtifacts flags.

Tests & fixtures

Deliverables