5

この質問は以前に尋ねられましたが、答えは非常に一般的です。静的コード分析のコンテキストで、特にJavaを使用し、コンテキスト(非)センシティブ分析という用語と組み合わせて使用​​すると、コンテキストが何を意味するのを知りたいと思います。

たとえば、このペーパーでは、このコンテキストで「コンテキスト」を広範囲に使用します。実際、私はまだコンテキストの適切な定義を見つけていません。

4

1 に答える 1

17

リンク先の質問の「コンテキスト」という言葉は、静的分析を説明するために使用されているようには見えないため、実際には別の質問です。その質問の答えは「一般的」ではないと思います。しかし、それらは間違いなくあなたが探している特定の答えではありません.

コンテキスト依存分析は、関数呼び出しのターゲットを分析するときに呼び出しコンテキストを考慮する手続き間の分析です。

状況依存分析がどのように機能するかの例を次に示します。

int a,b;

int *x;

void f(void)
{
  ++*x;
}

int main(){
  x = &a;
  f();

  x = &b;
  f();
}

これはJavaではありませんが、あなたの質問は主にデータフロー分析における文脈依存性に関するものなので、あまり邪魔にならないことを願っています.

f()このプログラムは呼び出しサイトから呼び出されるため、状況依存のアナライザーはこのプログラムを (少なくとも) 2 回分析します。f()の効果は毎回かなり異なるため、これにより正確になります。a==1状況依存の分析では、最初の呼び出しの後にとが変更されておらず、2 番目の呼び出しの後にとのb両方が変化していないと推測できます。状況依存性もまた、分析のコストを高くします。ab1

コンテキストに依存しない分析はf()1 回だけ分析し、通常は「<code>f()がaorbを変更するためf()、.

于 2012-11-15T12:09:44.420 に答える