Skip to content

1.9.0

Latest

Choose a tag to compare

@nhan7777 nhan7777 released this 07 Oct 16:39
c4c29a6

Fixed

  • Asset scan no longer stalls on code that reassigns locals from each other
    (for example the hash routines in syncfusion_flutter_pdf). Opaque-call
    asset provenance is now collected as one path-independent union that expands
    each expression and assigned variable once, instead of re-expanding every
    assignment path, which was exponential and made real-project scans run for
    hours. Retained assets and blockers are unchanged.

Changed

  • Scan is roughly 3× faster on medium projects (synthetic 1000-file fixture:
    7.3 s to 2.4 s median, −67%). Package ownership, path-policy exclusion, canonical
    path resolution, and project-relative paths are memoized per analysis pass
    instead of repeating symlink and stat syscalls for every reference; the
    duplicate detector hashes small files from one bounded read; the Dart
    adapter reuses resolved-unit diagnostics instead of a second analyzer
    round-trip per unit; declaration-scoped caller IDs are memoized per fragment;
    the reference collector tracks non-runtime syntax depth instead of two
    ancestor walks per identifier; and the unresolved-reference index skips
    function bodies. Graph nodes, edges, and findings on the synthetic fixtures
    are unchanged.
  • Asset analysis inspects at most 2,000 external Dart libraries reachable
    from selected execution roots. Past that bound it adds the fail-closed
    blocker external Dart closure fan-out truncated at 2000 libraries for
    the selected package's asset namespace instead of resolving the rest.
    On very large dependency graphs, unused assets are therefore reported as
    REVIEW instead of SAFE.
  • Asset analysis memoizes string evaluation per unit, pattern matches per
    pattern, and package ownership lookups by nearest root path.