簡體   English   中英

從使用JDT的方法開始深入訪問所有方法調用

[英]Visit all method calls deep down starting from method with JDT

我需要解析java方法,在其中查找所有其他方法調用(並在其中進行更深入的查找,以此類推),以便查找某個字符串的所有出現情況,例如說“ System.out.println(“ Blabla”);“

我該如何使用JDT( http://www.programcreek.com/2011/01/best-java-development-tooling-jdt-and-astparser-tutorials )以及其他替代方法?

如果我有這樣的代碼:

public void A() {

    "System.out.println ("Blabla");
    B();        

}

public void B() {

    "System.out.println ("Blabla");
    C();

}

public void C() {

    "System.out.println ("Blabla");

}

我只想指定方法的名稱(“ A”),並希望將其作為輸出:

"System.out.println ("Blabla");
"System.out.println ("Blabla");
"System.out.println ("Blabla");

您要手動還是以編程方式執行此操作?

我建議使用Eclipse中的Open Call Hierarchy選項,只需按Ctrl + Alt + H來檢查是否需要此功能。 它一直追溯到調用給定方法的位置。 如果您熟悉JDT,則必須在如何找到該Eclipse功能的實現方面有一定的經驗,以便您可以進一步分析它(我建議使用Plug-in Spy )。

希望能有所幫助。

使用JDT / AST可以做到這一點。 我做過類似的事情。 我最喜歡的方法是為Eclipse創建一個插件,並在項目內部處理文件(編譯單元)。

遵循的基本步驟是:

  1. 您可以使用AST將代碼(即JDT ICompilationUnit的代碼)解析為AST模型。

  2. 然后,您可以使用訪問者模式找到要開始搜索的MethodDeclaration。

  3. 一旦有了它,就可以在MethodDeclaration上再次使用訪問者來查找方法主體內的所有MethodInvocations。

  4. MethodInvocation的綁定將使您指向方法beeing所調用的MethodDeclaration。 (確保在解析時啟用綁定。)

與AST一起使用時,真正非常好的工具是AST View。 它顯示了使用Eclipse Java編輯器打開的文件的AST模型。 您可以從以下更新站點安裝AST視圖: http : //www.eclipse.org/jdt/ui/update-site

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM