Xcode AST

有大佬知道如何在Xcode编译的同时获取AST吗?
Swift的工程。。

需求是找到指定函数全部的调用链,指定函数是一个列表,有很多。

我之前OC的做法是单独跑clang -fmodules -fsyntax-only -Xclang -ast-dump -fno-color-diagnostics filepath >>xxx.txt, xcode中可以看到编译过程中输出命令,可能可以通过build.sh 或者其他配置控制这些参数

但是这样的结果好像不能满足需求,好像这个时候还没链接

我之前试过,如果单独跑不编译项目的话会缺很多东西。。

是的,包括宏展开,可能要做个插件hook clang了

还有一种思路可能就是在编译的时候记录compire的过程,然后拿它的参数来编,那个巴拉巴拉一大堆的东西

要不读取 Xcode 的索引 indexstore 看看

这个在哪啊

一般默认位置:
~/Library/Developer/Xcode/DerivedData/test-eirtspgmcpqpxmbjqajytrozjhwl/Index/DataStore/v5
使用看官方:GitHub - apple/indexstore-db: Index database library for use with sourcekit-lsp

尝试研究了一下,但是有个困惑。针对系统函数的调用,用哪个方法可以查到他的calledBy呢。。他这些API注释也不写一个 :joy:

大佬有思路吗?我这几天看到这个文章用indexStore好像能搞。