gpt4 book ai didi

java - 如何将 AST 转换为 JDT Java 模型

转载 作者:行者123 更新时间:2023-12-04 05:03:33 26 4
gpt4 key购买 nike

我正在为我的插件编写单元测试,该插件使用来自 JDT 的 IType 和 IMethod 接口(interface)。要编写单元测试,我需要实例化这样的接口(interface)。回答
this question展示了如何创建 AST 模型,但我不知道如何将其转换为 Java 模型?

我的代码如下所示:

String source = 

"package com.test\n" +
"\n" +
"import com.test.something;" +
"\n" +
"public class Class{\n" +
"int sum(int a, int b)\n" +
"}\n";

ASTParser parser = ASTParser.newParser(AST.JLS4);
parser.setSource(source.toCharArray());
CompilationUnit unit = (CompilationUnit) parser.createAST(null);

所以我有一个 CompilationUnit 的实例,但我需要一个 ICompilationUInit 的实例,所以我可以访问 IMethodIType对象。

最佳答案

这是不可能的。 ICompilationUnit s 是 java 模型的一部分,这意味着它是某个 Java 项目的一部分,并且具有完整的类路径、包、包根等。您所做的只是创建一些未连接的文本的解析树到任何java项目。

如果您可以更具体地了解您的目标是什么,那么您可能并不真正需要任何 IType 和 IMethod 实例。

或者,如果您确实需要这些类型的实例,那么您将需要生成 IProject s,给它添加一个java性质,然后用​​文件填充它。最好的办法是看看 JDT 测试基础设施是如何工作的。

看看这个文件:https://github.com/eclipse/eclipse.jdt.core/blob/master/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/TestingEnvironment.java

以及如何在整个测试框架中使用它。

关于java - 如何将 AST 转换为 JDT Java 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15813202/

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