2013-06-28 89 views
1

我想查找給定變量或給定方法的調用者的引用,就像在Eclipse中的「打開調用層次結構」和「(查找)引用」功能一樣 - 點擊一個變量或方法。)查找抽象語法樹中的變量/方法引用

現在我已經獲得了源代碼的抽象語法樹。我使用Eclipse JDT來獲取AST,它也解析了所有類型的綁定。

所以我的問題是,是否有可能找到使用只有這個抽象語法樹的變量/方法引用? (我知道有些代碼分析庫使用字節碼來實現這一點。我不知道是否類似的分析可以通過AST進行。)

回答

0

只使用該抽象語法樹

如果僅給出AST,則無法輕鬆確定引用或調用者。 AST是只是語法,並沒有直接編碼它的含義(與 的意思的子集,「這是被稱爲」)。

要確定引用或調用的內容,必須以相當複雜的方式分析AST,以建立符號範圍並確定涉及什麼。 (Java標準/書籍的許多 都是關於這個過程的,但是由於其複雜性,這些信息在整本書中分散爲 )。

一個好的前端通常會從AST中計算出這個信息,或者一些可以輕鬆提取的信息。我相信Eclipse JDT擁有這些信息,並且提供了一組訪問它的API,但我對JDT一無所知。

但是你不能輕易從AST中獲取它。