看实现成本和维护成本
1、除非是数据的动态构造比较麻烦,一般使用动态实现适配各个环境,并且避免静态数据被偶然篡改造成的不稳定
2、动态准备数据可能降低用例执行通过率以及增加执行时长,可以用异步方式提前准备并写入自定义数据库或缓存中,执行时直接使用
大部分技术栈应该都有自己一套调用链分析工具,基本也是利用语法树这种方式做的静态分析,例如 golang 中的 callgraph,不用自己再造一遍轮子了
https://pkg.go.dev/golang.org/x/tools/cmd/callgraph