[英]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创建一个插件,并在项目内部处理文件(编译单元)。
遵循的基本步骤是:
您可以使用AST将代码(即JDT ICompilationUnit的代码)解析为AST模型。
然后,您可以使用访问者模式找到要开始搜索的MethodDeclaration。
一旦有了它,就可以在MethodDeclaration上再次使用访问者来查找方法主体内的所有MethodInvocations。
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.