Developer Tools · Cluster
Static Analysis
Linters, dataflow, and false positives.
- 01 Why Linters Parse: Token Streams, Syntax Trees, and the Cost of Losing Layout How a linter turns source text into tokens and trees, what separates a concrete from an abstract syntax tree, and which checks become impossible once layout is discarded.
- 02 Scope Chains and Name Resolution: Why Spelling Is Not Identity How a linter builds a scope tree, resolves each reference to a declaration, and avoids reports that confuse two unrelated variables with the same name.
- 03 Diagnostic Spans and the Encoding Problem How analyzers represent the location of a finding, why byte offsets and UTF-16 columns disagree, and what suppression comments and SARIF records add to the picture.
- 04 Control-Flow Graphs and the Dominance Relation How basic blocks and edges are built from syntax, how dominators are computed, and why unreachable-code reports depend on modelling exceptions and non-returning calls.
- 05 Monotone Dataflow: Lattices, Transfer Functions, and Fixpoints The worklist formulation behind liveness, reaching definitions, and constant propagation, why monotonicity guarantees termination, and where the abstraction loses precision.
- 06 Path Sensitivity and the Cost of Remembering Branch Conditions Why merging states at a join loses the correlation between variables, how path splitting and predicate abstraction recover some of it, and where the exponential cost is cut off.
- 07 Interprocedural Summaries and the Context-Sensitivity Bill How a function is summarized for callers, how call graphs are built under virtual dispatch, and why distinguishing call sites multiplies cost without always buying precision.
- 08 May-Alias Analysis and the Shape of a Points-To Set Why a write through one reference can change what another observes, how inclusion and unification constraints differ, and what field sensitivity costs.
- 09 The Structure of False Positives: Over-Approximation and Suppression Debt Why a sound static analysis must report impossible paths, how technical and effective false positives differ, and what suppression comments cost over the life of a codebase.
- 10 Incremental Static Analysis: Dirty Sets and Cache Invalidation What can be reused when one file changes, how cache keys must cover dependencies and configuration, and why under-approximated invalidation produces confident wrong answers.