用途:Callidescope 为 TypeScript 工作区构建一张调用图并度量其形状,能跟随注入依赖的调用跳转(如 this.someService.load() 进入 SomeService.load),这是逐文件工具看不到的边,也是框架代码库控制流的主要所在。
主要能力:三条命令回答三类问题。npx callidescope 报告整个工作区,按项目给出两项发现:超过 limits.maximumDepth 的最深调用栈(每个入口点只构建一条路径),以及一个可调用对象直接调用的数量(广度,仅在项目声明 limits.maximumBreadth 时门禁)。npx callidescope depth --addresses src/foo.service.ts#FooService.bar 打印该可调用对象上方与下方的每条路径;npx callidescope breadth --addresses src/foo.service.ts#FooService.bar 并排打印直接被调用者与直接调用者。地址格式为 <file>#<qualified-name>,同名声明可用尾部 :<line> 消歧。
使用方式:无工作区配置文件的仓库用默认值追踪;被追踪项目自身的 callidescope.config.ts 必须存在且完整,否则运行在追踪前被拒绝。depth 与 breadth 只打印,不写入、不比较目标,也不接受 --check、--write、--json、--markdown、--mermaid、--maximum-depth、--maximum-breadth,但接受塑造图的标志(--directories、入口点覆盖、两个排除列表)以及 --config 和 --format。
适用场景:判断工作区是否有过深或过宽的调用;重命名前找出全部调用者;拆分宽可调用对象时选择接缝;判断能否内联;判断能否折叠某层;判断某可调用对象实际属于什么。
限制:计算成员调用 targetkey 解析为空,记为不可跟随;结构化匹配可能包含运行时并不真正调用的类;进入已安装依赖的调用是叶子;excludeCallees glob 会从图中完全移除;depth 每个方向上限 200 条路径;mermaid 图在 300 个可调用对象处停止并丢弃整条栈。作用域运行只向下遍历依赖闭包,不包含依赖方。