-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Open
Description
需求描述
在一段脚本执行后,给应用返回语法树节点是否被执行的信息。相比 #373,支持面的更加广(比如可以支持循环),但是不会包含具体的计算结果 value
实现思路
因为分支覆盖信息统计会产生性能损耗,所以默认不进行统计。需要用户主动打开 traceEvaluated 选项后才会在 QLResult 中返回覆盖信息。
覆盖信息以 EvaluatedTrace 对象的形式返回,一个 EvaluatedTrace 对象代表一个计算节点:
public class EvaluatedTrace {
private TraceType type;
private String token;
private Object value;
private boolean evaluated;
private List<EvaluatedTrace> children;
}案例1,无短路运算场景:
if (a>3) {
sum = 0
for (i:[1,2,3]) {
sum += i
}
sum
} else {
100
}则返回的 EvaluatedTrace 对象如下(假设上下文传入的a为4):
即下钻每一个 Block(代码块) 的结构,每一行作为 children 中的一个元素,并且整体标记该 block 是否执行过。
Metadata
Metadata
Assignees
Labels
No labels
