从使用JDT的方法开始深入访问所有方法调用

时间:2014-09-05 13:50:13

标签: java parsing eclipse-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");

2 个答案:

答案 0 :(得分:1)

您想手动或以编程方式执行此操作吗?

我建议在Eclipse中使用 Open Call Hierarchy 选项,只需按 Ctrl + Alt + H 检查这是否是您需要的。它会追溯到调用给定方法的所有方向。如果您熟悉JDT,那么您必须具备如何查找Eclipse功能实现的经验,以便进一步分析(我建议使用Plug-in Spy)。

希望有所帮助。

答案 1 :(得分:1)

JDT / AST可以实现这一点。我做过类似的事情。我最喜欢的方法是在项目内部为Eclipse和进程文件(编译单元)创建一个插件。

要遵循的基本步骤是:

  1. 您可以使用AST将代码(即JDT ICompilationUnit)解析为 AST模型。

  2. 然后,您可以使用访问者模式查找要开始搜索的MethodDeclaration。

  3. 完成后,您可以在MethodDeclaration上再次使用访问者来查找方法体内的所有MethodInvocations。

  4. MethodInvocation的绑定将指向您调用方法的MethodDeclaration。 (确保在解析时启用绑定。)

  5. 在使用AST时,使用的一个非常好的工具是AST视图。它显示了使用Eclipse Java编辑器打开的文件的AST模型。您可以从此更新站点安装AST视图:http://www.eclipse.org/jdt/ui/update-site