在上下文(不)敏感分析中,“上下文”指的是什么?

6 浏览
0 Comments

在上下文(不)敏感分析中,“上下文”指的是什么?

这个问题之前就有人问过,但回答都非常通用。我想知道在静态代码分析中,特别是在Java中,并且与上下文(不)敏感分析术语结合使用时,上下文的意思是什么。例如,这篇论文在这个上下文中广泛使用了“上下文”。事实上,我还没有找到一个合适的上下文定义。

0
0 Comments

“上面链接中的问题中的‘context’这个词似乎并不是用来描述静态分析的,所以你的确是另一个问题。我不认为那个问题的答案是‘通用’的。但它们肯定不是你要找的具体答案。”一个上下文敏感分析是一种在分析函数调用目标时考虑调用上下文的过程间分析。下面是一个上下文敏感分析的例子:int a,b;int *x;void f(void){++*x;}int main(){x = &a;f();x = &b;f();}这不是Java,但你的问题主要是关于数据流分析中的上下文敏感性,所以我希望它不会太令人不安。上下文敏感分析器在这个程序中至少分析了f()两次,因为它从调用站点调用。这使得它很精确,因为f()的效果在每一次调用时都是不同的。上下文敏感分析可以推断出a==1并且第一次调用后b没有改变,而第二次调用后a和b都是1。上下文敏感性也使得分析变得昂贵。一个上下文不敏感分析只会分析f()一次,通常只会产生“f()修改a或b,在调用f()后,这两个变量的内容是未知的”这样的信息。

0