An Interprocedural Program Analysis is Call-site 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 Call-site 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 Call-site 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,