Points-to Analysis(またはJavaのコンテキストでの参照分析)は、コンパイル時に、ポインターが実行時に指している可能性のあるすべてのオブジェクトを推測しようとします。これは健全ですが、おおよそです。
状況依存(CS)ポイントツー分析では、関数の分析中に関数の呼び出しコンテキストが考慮されます。以下のプログラムの場合、CSポイントツー分析は、xとzが異なるポイントツー情報を持っていることを推測できます。つまり、yとwが異なるオブジェクトを指している場合、それらは異なるオブジェクトを指します。
main() {
x = foo(y);
z = foo(w);
}
foo (a) {
return a;
}
対照的に、コンテキスト非依存(CI)分析では、呼び出し元のコンテキストを区別せず、xとzがエイリアスする(または同じオブジェクトを指す)可能性があると(不正確に、しかし健全に)推測します。
呼び出しコンテキストは、現在の(現在の呼び出し)関数が表示される一連の呼び出しサイトです。この例では、fooには2つの呼び出しコンテキストがあります。1つはmainからの最初の呼び出しサイトにあり、もう1つはmainの2行目にあります。アクティブなコールサイトは、分析しているサイトです。