使用JDT解析Java项目
我正在使用Java开发工具(JDT)编写一个Swing Java应用程序,如下所示 输入:一个Java项目 输出:此项目中所有元素的名称(包、类、方法、字段等) 到目前为止,我已经了解了如何通过使用JDT创建相应的抽象语法树(AST),解析单个Java文件来收集信息。但是,这种方法将导致缺少分析信息(例如:获取所有调用相同方法的方法)使用JDT解析Java项目,java,swing,eclipse-jdt,Java,Swing,Eclipse Jdt,我正在使用Java开发工具(JDT)编写一个Swing Java应用程序,如下所示 输入:一个Java项目 输出:此项目中所有元素的名称(包、类、方法、字段等) 到目前为止,我已经了解了如何通过使用JDT创建相应的抽象语法树(AST),解析单个Java文件来收集信息。但是,这种方法将导致缺少分析信息(例如:获取所有调用相同方法的方法) 如何通过应用JDT从绝对路径解析项目,而不独立解析所有单个.java文件?我的想法是我们将独立解析每个.java文件。获得的AST可以通过绑定来解析。方法Util
如何通过应用JDT从绝对路径解析项目,而不独立解析所有单个.java文件?我的想法是我们将独立解析每个.java文件。获得的AST可以通过绑定来解析。方法Utils.getFile()将获取.java文件的内容并保存在字符串对象中
public parseJavaFile(String pathOfJavaFile, String[] sources, String[] classpath, String nameOfJavaFile)
throws Exception {
ASTParser parser = ASTParser.newParser(AST.JLS8);//choose source code analyzing strategy
parser.setResolveBindings(true);// turn on binding strategy
parser.setKind(ASTParser.K_COMPILATION_UNIT);// the source code is a file .java
parser.setBindingsRecovery(true);
parser.setCompilerOptions(JavaCore.getOptions());
parser.setUnitName(nameOfJavaFile);
parser.setEnvironment(classpath, sources, new String[] { "UTF-8" }, true);
parser.setSource(Utils.getFile(pathOfJavaFile).toCharArray());
CompilationUnit cu = (CompilationUnit) parser.createAST(null);
if (cu.getAST().hasBindingsRecovery()) {
// Now binding is activated. Do something else
}
}
如何使用上述代码的示例
- classpath对应于jre文件夹中rt.java的绝对路径
- sources是源代码文件夹的列表
}public static void main(String[] args) throws IOException { String projectPath = "G:\\Dropbox\\Workspace\\Wave-CIA-rebuid-v2"; String[] sources = { "G:\\Dropbox\\Workspace\\Wave-CIA-rebuid-v2\\src" }; String[] classpath = { "C:\\Program Files\\Java\\jre1.8.0_40\\lib\\rt.jar" }; String pathOfJavaFile = "G:\\Dropbox\\Workspace\\Wave-CIA-rebuid-v2\\src\\test.java"; String nameOfJavaFile = "test.java"; new parseJavaFile(pathOfJavaFile, sources, classpath, nameOfJavaFile);
请参阅:如果不在插件环境中运行,我们可能无法解析项目。帮助我。