假设我有这个 Java 源代码。如何获取“extractedMethod(amount)”调用的 startPosition 和长度?
package smcho;
public class Extract {
String _name = "";
public int extractedMethod(int amount)
{
....
}
public int getValue(int amount) {
if (amount > 10) {
int z = extractedMethod(amount);
return z;
}
....
}
我可以使用六角查看器来查找起始位置为 0x1FA,长度为 len("extracted(method)") == 17,但我想使用 JDT 以编程方式进行。
一旦我可以获得 CompilationUnit,但我需要知道如何在该 CompilationUnit 中获取调用引用。
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
IProject orig = root.getProject(this.projectName);
orig.open(pm);
javaProject = JavaCore.create(orig);
IType type = this.javaProject.findType(this.className);
ICompilationUnit unit = type.getCompilationUnit();
ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setSource(unit);
parser.setResolveBindings(true);
CompilationUnit cunit = (CompilationUnit) parser.createAST(null);
ASTNode root = parser.createAST(null);
root.accept(new ASTVisitor() {
public bool visit(...)
});