gpt4 book ai didi

java - 使用JDT解析Java项目

转载 作者:行者123 更新时间:2023-12-01 06:11:45 28 4
gpt4 key购买 nike

我正在使用 Java 开发工具 (JDT) 编写 Swing Java 应用程序,如下所示。

输入:Java 项目

输出:此项目中元素的所有名称(方法字段等),等等

到目前为止,我已经了解了如何通过使用JDT来解析单个Java文件来收集信息,并创建相应的抽象语法树(AST)。然而,这种方法会导致分析信息的缺乏(例如:获取调用同一方法的所有方法)。

如何通过应用 JDT 从绝对路径解析项目,而不独立解析所有单个 .java 文件?

最佳答案

我的想法是我们将独立解析每个.jav文件。得到的AST可以进行解析绑定(bind)。方法 Utils.getFile() 将获取 .java 文件的内容并保存在 String 对象中。

    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);

    }

关于java - 使用JDT解析Java项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33184658/

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