我需要解析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");
答案 0 :(得分:1)
您想手动或以编程方式执行此操作吗?
我建议在Eclipse中使用 Open Call Hierarchy 选项,只需按 Ctrl + Alt + H 检查这是否是您需要的。它会追溯到调用给定方法的所有方向。如果您熟悉JDT,那么您必须具备如何查找Eclipse功能实现的经验,以便进一步分析(我建议使用Plug-in Spy)。
希望有所帮助。
答案 1 :(得分:1)
JDT / AST可以实现这一点。我做过类似的事情。我最喜欢的方法是在项目内部为Eclipse和进程文件(编译单元)创建一个插件。
要遵循的基本步骤是:
您可以使用AST将代码(即JDT ICompilationUnit)解析为 AST模型。
然后,您可以使用访问者模式查找要开始搜索的MethodDeclaration。
完成后,您可以在MethodDeclaration上再次使用访问者来查找方法体内的所有MethodInvocations。
MethodInvocation的绑定将指向您调用方法的MethodDeclaration。 (确保在解析时启用绑定。)
在使用AST时,使用的一个非常好的工具是AST视图。它显示了使用Eclipse Java编辑器打开的文件的AST模型。您可以从此更新站点安装AST视图:http://www.eclipse.org/jdt/ui/update-site