Infer Internals for Integrations and Infrastructure
summary
Describes how Infer separates capture (compiler-plugin style capture into SQLite DBs) from analysis and reporting, and how existing Gradle/Buck integrations parallelize per-file capture then merge SQLite capture DBs. Explains three schedulers: coarse file-level, procedure-level using the static call graph, and a restart scheduler with locking and fail‑and‑reschedule to avoid races; shows distributed mode that broadcasts captures to hosts and a weighted file-level partitioning that reduces duplicated work and balances load. Mentions cycles, live‑restart costs, and incremental use of recorded dependency summaries.
AI-written summary · about
chapters (11)
- 0:00Infer Internals intro
- 1:02Basic Infer run phases
- 3:15Capture phase and build
- 8:57Parallel capture in large code
- 14:46Analysis phase and scheduling
- 16:13File scheduler limits
- 20:30Call graph scheduler
- 26:36Restart scheduler for races
- 31:18Distribute analysis across hosts
- 34:16Intelligent partitioning
- 38:30Q&A
related talks
59mIntelliJ IDEA – The IDE That Speaks Gradle
27mComposite Builds with Gradle
43mDancing with Elephants: Gradle Tips and Tricks
18mEnhancing Infer Compositional Analysis with Summary Specialization
31mLet's focus on IDE Indexing
36mImproving Gradle Builds
56mDeep Dive into the Android Gradle Plugin
51mCreate Elegant Builds At Scale With Gradle
