Context Sensitivity


Context Sensitivity

An Interprocedural Program Analysis is Context Sensitive if it can distinguish between different invocations of a subroutine in a program. For example:

``` fun f(x) = { return x; }

... var a = f(1); // loc A ... var b = f(null); // loc B ... ```

A Context Sensitive nullness analysis may be able to determine that a must be non-null at loc A, while b must be null at loc B. By contrast, a Context Insensitive analysis cannot distinguish the results of the two calls to f at loc A and at loc B.

This form of context sensitivity is more precisely called Call-Site Sensitivity. When analysing object-oriented languages, other forms of context sensitivity may be even more effective,