回顾一下从练习5.26中可以得知,如果一个分析的所有约束函数都满足练习4.20中定义的分配性质,那么该分析就具有分配性。也就是说,对于一个函数$f:L1 \rightarrow L2$,其中L1和L2是格,当对于所有$x, y \in L_1$ 时,$f(x \sqcup y) = f(x) \sqcup f(y)$ 时,函数f是分配性的。在本章中,我们介绍分配性如何为上下文敏感和流敏感分析提供了高效的算法。这些结果基于两种要素的结合:

  1. 上下文敏感分析的函数性方法(第8.4节)。
  2. 分布式函数的巧妙紧凑表示。

这些技术源于Reps、Horwitz和Sagiv的工作[RHS95, SRH96],本章节以约束为基础的风格呈现,使与前面的章节之间的联系更加明确。

9.1 案例:可能未初始化变量分析

9.2 另一种形式

9.3 分配方程的压缩表示方式

9.4 IFDS 框架

9.5 复制常量传播分析

9.6 IDE框架