主要是我自己阅读代码时发现,一个函数/类的调用栈很长的情况下,按顺序阅读查定义的方式比较慢。对关键函数/类查引用的方式会更快一些。
比如 rgw 对象存储中 lifecycle 的实现会调用大量公共基础实现(put/get/delete)。按查定义的方式整个路径会很长且不容易定位问题。通过查引用能直接定位到较深的调用栈中。常规的查引用一般都只能查一层,这时候一个问题就是 每个引用都要开一个 buffer, 和 citre-peek 解决的问题十分类似。
后来使用 calltree.pl 能直接对完整的调用栈做一个总览,深度也可以自己控制。对查引用这个场景来说十分方便。
查引用的另一个问题是很多时候结果并不完整。比如 ccls 对很多模板引用都查不到。按我最近碰到的例子
Deleting::react 方法实际在 boost 的状态机中被调用,但是 ccls 没识别出来。使用 calltree.pl 能比较完整的显示所有路径。
感觉如果 ctags 支持查引用的话实现起来应该会更方便一些。
