gpt4 book ai didi

java - 如何解析java方法体?

转载 作者:行者123 更新时间:2023-11-30 02:30:34 25 4
gpt4 key购买 nike

我想解析 java 源文件 (.java),以便识别类中包含对特定方法的调用的方法。

在下面的示例中,我需要知道哪些方法包含对 xyz() 的调用。因此,解析器应该返回method01和method03

public class A{
private void method01(){
//some statements
xyz();
//more statements
}

private void method02(){
//some statements
xyz123();
//more statements
}

private void method03(){
//some statements
xyz();
//more statements
}
}

我尝试使用 javaparser (com.github.javaparser)。我创建了一个访问者并通过覆盖

public void visit(MethodDeclaration n, Void arg) 

我能够“访问”类中的所有方法。

但是我不知道如何解析visted方法的主体。我不愿意使用 n.getBody().toString().contains(“xyz()”)

最佳答案

通过检查Javadoc ,看起来你可以做这样的事情:

private MethodDeclaration currentMethod = null;

@Override
public void visit(MethodDeclaration n, Void arg) {
currentMethod = n;
super.visit(n, arg);
currentMethod = null;
}

@Override
public void visit(MethodCallExpr n, Void arg) {
super.visit(n, arg);
if (currentMethod != null && n.getName().asString().equals("xyz") {
// Found an invocation of xyz in method this.currentMethod
}
}

上面的代码跟踪当前方法并查找何时访问与名称“xyz”匹配的方法调用

关于java - 如何解析java方法体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44402486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com