假設我有這個Java源代碼。我如何獲得startPosition和「extractedMethod(amount)」調用的長度?使用JDT獲取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(「提取(法)」)== 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(...)
});
這個答案是錯誤的,因爲get length方法返回一個字符大小,所以開始位置是true,但結束行是錯誤的@prosseek –