0

在 spoon 代码分析工具中,AST 使用以下命令在 GUI 中可视化:

$ java -cp 勺子核心-5.9.0-jar-with-dependencies.jar 勺子.Launcher -i MyClass.java --gui --noclasspath

我试图在没有 -gui 的情况下运行相同的命令,但是我没有得到任何输出。无论如何我可以在文本文件中获取 AST。

4

2 回答 2

1

使用勺子处理器。任何 Spoon 处理器都会预先访问 AST 的所有元素,因此您可以简单地创建一个 CtElement 处理器并打印正在访问的元素:

@Override
public void process(CtElement element) {
  //Find the level in the Syntax Tree of the element
  int n = 0;
  CtElement parent = element.getParent();
  while (parent != null) {
    n++;
    parent = parent.getParent();
  }

  // Print the element
  try {
    String s = "";
    if (n > 0) s = String.format("%0" + n + "d", 0).replace("0","-");
    System.out.println(s + element.getClass().getSimpleName());
  } catch (NullPointerException ex) {
    System.out.println("Unknown Element");
  }
}
于 2017-10-24T16:31:00.213 回答
-2

您可以使用名为showMeYourSpoon专用于可视化某些 Java 代码的 Spoon AST 的 JavaFX 应用程序。但是,此工具不能将项目的所有源(最多一个类,例如您的类MyClass.java)作为输入。

https://github.com/inspectorguidget/showMeYourSpoon

使用该应用程序,您可以在专用文本区域中编写或复制粘贴您的 Java 代码,然后将计算并显示相应的 Spoon AST。

要将 Spoon AST 导出为文本文件,您可以单击save按钮。

此应用程序具有其他功能,例如:

  • 显示/屏蔽 AST 的隐式元素
  • 单击 Java 代码元素会自动在树视图中选择相应的 AST 元素
  • 单击树视图中的 AST 元素会在文本区域中选择相应的 Java 代码块
  • 指定您编写的 Java 代码类型(类、类元素、语句或表达式)

截图showMeYourSpoon

于 2019-07-30T19:16:35.120 回答