繁体   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