用途:当错误出现在执行深层而非入口处时,通过沿调用栈反向追踪,找到无效数据或错误参数的最初来源,从根源修复。适用于错误发生在深层执行、堆栈显示较长调用链、不清楚无效数据来源、需要定位触发问题的测试或代码等场景。
主要能力与流程:先观察症状(如 git init 在错误目录失败),找到直接造成该错误的代码;再逐层追问“谁调用了它”,沿调用链向上追溯;检查传入的值(例如 projectDir 为空字符串,空字符串作为 cwd 会解析为 process.cwd());最后定位最初触发点(如测试在 beforeEach 之前访问 context.tempDir)。
无法手工追踪时可加插桩:在危险操作前记录日志,用 new Error().stack 捕获完整调用链,输出目录、cwd、环境变量等上下文。测试中建议用 console.error() 而非 logger,因为 logger 可能被抑制。可运行 npm test 2>&1 | grep 'DEBUG git init' 采集信息,再从堆栈中找测试文件、行号与重复模式。若不确定哪个测试造成污染,可使用资料中提到的二分脚本:./find-polluter.sh '.git' 'src/**/*.test.ts',逐个运行测试并在首个污染者处停止。
限制与注意:核心原则是绝不只修复错误出现的位置。定位到根源后,除在源头修复,还可在各层增加校验做纵深防御(如参数校验、非空校验、环境守卫、操作前堆栈日志)。资料未提供安装命令、许可证、价格与平台支持等信息。