這個問題是asked earlier但答案是非常通用的。我很想知道什麼上下文意味着在靜態代碼分析的上下文中,具體來說與Java和當與術語上下文(在)敏感分析結合使用。「上下文」在上下文敏感分析中究竟意味着什麼?
例如this paper在本上下文中廣泛使用「上下文」。事實上,我還沒有找到一個體面的上下文定義。
這個問題是asked earlier但答案是非常通用的。我很想知道什麼上下文意味着在靜態代碼分析的上下文中,具體來說與Java和當與術語上下文(在)敏感分析結合使用。「上下文」在上下文敏感分析中究竟意味着什麼?
例如this paper在本上下文中廣泛使用「上下文」。事實上,我還沒有找到一個體面的上下文定義。
您鏈接的問題中的「上下文」一詞似乎並未用於描述靜態分析,因此您的確是另一個問題。我不認爲那問題的答案是「通用的」。但他們絕對不是你正在尋找的具體答案。
A context-sensitive analysis是在分析函數調用的目標時考慮調用上下文的過程間分析。
這裏是一個上下文敏感的分析可能是如何工作的一個例子:
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()
任何呼叫後,這兩個變量的內容未知」。
簡單而直接的+1 – berkay
我不確定它有一個明確的含義。上下文敏感的靜態分析可以考慮當前分析的函數的調用發生(或調用堆棧的一些抽象)。 –
「上下文」的含義本身高度依賴於上下文。例如,可以在[數據流分析的維基百科條目](http://en.wikipedia.org/wiki/Data-flow_analysis)上找到一個相似的含義。 –