Code transformation With Spoon Presentation

问题

代码转换需要越来越多的库

  • JDT
    • 用于Eclipse相关开发
    • read, generate, analyse and transform source code
    • API和meta model难以理解
  • APT(Annotation Processing Tool)
    • SUN,之后由Oracle开发
    • 在开源软件中广泛使用,现代化
    • meta model受限, 不能进行代码转换

Spoon介绍

  • 更完善的meta model
  • Processor: 一次程序分析由查询和分析代码组成。在Spoon中,这一对概念在processor中实现。Processor是专用于分析一种编程元素的类。
  • Factory: 创建新的程序元素,为其赋值并添加到已存在的AST上。Factory是以上功能的入口,每个factory有其自己的职责。比如CoreFactory创建空节点,CodeFactory创建一个可以打印的节点
    https://fr.slideshare.net/GrardPaligot/code-transformation-with-spoon 48开始,直观对应program elements和meta model。
  • Template: template可用于代码转换。这些模板会进行静态类型检查,保证生成的代码是正确的。相比于使用Factory,模板可以大量简化代码
  • Query: 对于给定的AST,通过一系列filter来进行复杂的查询。

Spoon的基本用法

final SpoonAPI spoon = new Launcher();
spoon.addInputResource("/src/main/java/");
spoon.setSourceOutputDirectory("/target/");
spoon.addProcessor(new AwesomeProcessor());
spoon.run();

最后给了些练习,略过

上一篇:spring boot实战自动配置原理分析


下一篇:【笔记】Python | 04 | 操作列表 | 4.1 遍历整个列表