是否可以通过 spock 扩展访问和修改 AST 节点?

Is it possible to visit and modify AST nodes via spock extension?

Spock 有很棒的功能:Argument Constraints。 我正在尝试为我的任务移植此功能:

// JSON body template for comparsion
[
    id: _ as Long,
    inn: !null,
    name: _ as String,
    addresses: 1.._ * [city: _ as String, street: _ as String, house: _ as Integer]
]

Spock 还允许通过特殊注释扩展自身:Spock Extensions, AbstractAnnotationDrivenExtension

但是我无法实现如何通过visitFeatureAnnotation修改Feature的AST节点。 好像不可能。

Spock 没有为此提供任何挂钩。您必须编写一个标准的 Groovy AST 转换(或 fork Spock)。