How aaronxyliu/recall-exp works
This repository is the experiment and paper companion for ReCall, a tool for recovering function identities in bundled JavaScript; reusable tool code lives in a sibling repository. Its main workflow captures library JavaScript, source maps, and function records, prepares evaluation inputs, runs recovery experiments, and scores results. Separate studies examine bundler behavior, graph-based recovery, and validation. The README documents these research capabilities; some implementation links below rely on those statements or the source index, since many drivers and subsystems were not sampled.
Main entry points: prepare.mjs Input Preparation · inventory/inventory.mjs Bundle Inventory · jquery/inventory.mjs Function Inventory · collect.mjs Ground Truth Collection
Components 25
Ground Truth
- Ground Truth Collection
scripts/function-ground-truth/collect.mjs - Function Inventory
scripts/function-ground-truth/function-inventory.mjs - Source Relations
scripts/function-ground-truth/relations.mjs
Recovery Experiments
- Input Preparation
scripts/rq1-fixed/prepare.mjs - AST-First Runtime
scripts/rq1-ast-before/runtime.mjs - AST-First Scoring
scripts/rq1-ast-before/evaluate.mjs - Graph Runtime
scripts/rq1-graph-syntax/runtime.mjs - Graph Scoring
scripts/rq1-graph-syntax/evaluate.mjs - RQ1 Runner
scripts/rq1/run-one.mjs - Recovery Simulation
scripts/simulation/run.mjs - Simulation Validator
scripts/simulation/validator.mjs
Bundler Studies
- Bundle Parser
scripts/real-app/bundling-dataset/parse.mjs - Bundle Inventory
scripts/real-app/bundling-dataset/inventory/inventory.mjs - Inventory Analysis
scripts/real-app/bundling-dataset/inventory/analysis.mjs - Inventory Metrics
scripts/real-app/bundling-dataset/inventory/measure.mjs - Bundle Recognition
scripts/real-app/bundle-graph-v2/recognize.mjs - Bundle Context
scripts/real-app/bundle-graph-v2/context.mjs - Bundler Experiments
scripts/real-app/multi-bundler
Research Analysis
- Function Analysis
scripts/jquery/analysis.mjs - Function Inventory
scripts/jquery/inventory.mjs - Shared Analysis
scripts/jquery/common.mjs - Function Metrics
scripts/jquery/measure.mjs - Paper and Results
manuscript/main.tex
Other components
- Researcher
- Production Libraries
Connections 22
- Researcher → Ground Truth Collection: collects from
README.md - Production Libraries → Ground Truth Collection: provides inputs
README.md - Ground Truth Collection → Function Inventory: builds records
- Source Relations → Function Inventory: uses inventory
scripts/function-ground-truth/relations.mjs - Researcher → Input Preparation: prepares inputs
README.md - Input Preparation → AST-First Runtime: prepares artifacts
- Input Preparation → Graph Runtime: prepares artifacts
scripts/rq1-graph-syntax/continue-one.mjs - AST-First Runtime → AST-First Scoring: supplies recovery
scripts/rq1-ast-before/evaluate.mjs - Graph Runtime → Graph Scoring: supplies recovery
scripts/rq1-graph-syntax/evaluate.mjs - RQ1 Runner → Input Preparation: prepares inputs
- Researcher → RQ1 Runner: runs experiments
README.md - Recovery Simulation → Simulation Validator: uses validator
scripts/simulation/run.mjs - Bundle Inventory → Bundle Parser: parses bundles
- Bundle Inventory → Inventory Analysis: uses analysis
scripts/real-app/bundling-dataset/inventory/inventory.mjs - Bundle Inventory → Inventory Metrics: uses metrics
scripts/real-app/bundling-dataset/inventory/inventory.mjs - Bundle Context → Bundle Parser: parses modules
scripts/real-app/bundle-graph-v2/context.mjs - Bundle Context → Bundle Recognition: uses recognition
scripts/real-app/bundle-graph-v2/context.mjs - Researcher → Bundler Experiments: evaluates bundlers
README.md - Function Inventory → Function Analysis: uses analysis
scripts/jquery/inventory.mjs - Function Inventory → Function Metrics: uses metrics
scripts/jquery/inventory.mjs - Function Inventory → Shared Analysis: uses utilities
scripts/jquery/inventory.mjs - Researcher → Paper and Results: reports findings
README.md