尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
如何用 goose 内置的 analyze 工具跟踪代码库中函数的调用关系?
如何用 goose 内置的 analyze 工具跟踪代码库中函数的调用关系【免费下载链接】goosean open source, extensible AI agent that goes beyond code suggestions - install, execute, edit, and test with any LLM项目地址: https://gitcode.com/GitHub_Trending/goose3/goose当你要重构一个函数、排查某个函数的调用来源或者接手一个陌生代码库时需要回答这类问题authenticate这个函数定义在哪里哪些函数在调用它它自己又调用了谁goose 内置的 Analyze 平台扩展提供了一个analyze工具可以在代码库范围内构建调用图直接给出某个符号的定义位置、传入调用incoming calls和传出调用outgoing calls。该扩展默认启用无需额外配置它基于 tree-sitter 解析代码支持 Rust、Python、JavaScript、TypeScript/TSX、Go、Java、Kotlin、Swift、Ruby 等语言的常见文件扩展名完整列表见 languages.rs。analyze 的三种模式与本次要用的参数analyze工具根据入参工作在三种模式中典型流程是「目录 → 文件 → 符号」目录路径无focus返回带 LOC、函数数、类数的文件树深度受max_depth限制文件路径无focus返回该文件的函数含签名、类、导入和调用次数任意路径 focus返回该符号的调用图。这就是跟踪函数调用关系的模式符号匹配区分大小写。完整参数表见 codebase-analysis.md本文跟踪调用关系时涉及的核心参数如下参数默认值说明path无必填要分析的文件或目录的绝对/相对路径focusNone要跟踪的符号名。跨文件跟踪时path必须是目录follow_depth2从聚焦符号出发的追踪步数0只显示定义位置1直接调用者/被调用者2再往上一层以此类推max_depth3path为目录时的子目录遍历层数0不限制也限制focus模式的扫描深度forcefalse结果超过 50,000 字符时是否仍返回完整输出执行步骤跟踪一个函数的调用链在 goose 会话中工具既可以通过自然语言触发也可以用直接命令调用。以文档中的示例场景为例假设项目里有一个authenticate函数分散在auth.py、api.py、admin.py、tests/等多个文件中。方式一自然语言。直接对 goose 说Trace the dependencies for the authenticate function或 Show me the call graph for the authenticate function。方式二直接命令。指定目录范围和要跟踪的符号# 跟踪 authenticate 函数在 src/ 范围内的使用情况 analyze pathsrc/ focusauthenticate调用链需要追得更深时加上follow_depth# 从 UserClass 出发追踪 3 层调用链扫描整个项目目录 analyze path. focusUserClass follow_depth3path可以按实际项目替换为包含目标代码的目录如.、src/、crates/。follow_depth1只列出直接调用者和被调用者适合先看直接关系follow_depth0只显示符号定义在哪里适合先定位再展开。如何读取和核对输出focus模式的输出由固定结构组成见 format.rs 的实现首行FOCUS: 符号 (N defs, M refs)定义数量和直接引用第 1 层调用者与被调用者总数DEF 文件:函数:行号符号的定义位置可能有多条多个文件里同名定义IN:/IN (tests):传入调用链即谁在调用这个符号测试代码单独成组OUT:/OUT (tests):传出调用链即这个符号内部调用了谁末尾N files analyzed本次扫描覆盖的文件数。调用链用→连接每一段是文件:符号:行号。测试文件如*_test.py、.test.ts、/tests/目录下的文件会被自动识别并归入(tests)组方便你区分生产代码引用和测试引用。文档中给出了一份示例输出文档示例非固定结果对authenticate的查询返回了auth.py第 15 行的定义、api.py:25的login_handler()等传入调用以及db.py:102的validate_credentials()等传出调用。核对方式如果符号不在扫描范围内工具会明确返回Symbol xxx not found in N analyzed files.——看到这条消息时先扩大path目录或减小max_depth限制的影响而不是认为调用链为空。符号名区分大小写查不到时先确认拼写与实际定义一致。输出过大或扫描范围不对时如何处理当分析结果超过 50,000 字符时工具不会返回内容而是返回一条提示Output too large (N chars, limit 50000). Use force: true to override, or narrow scope with max_depth/focus.文档给出的处理选项收窄范围把path指向具体子目录或文件而不是整个仓库减小深度目录分析用max_depth1或max_depth2限制遍历层数forcetrue绕过大小警告拿回完整输出。文档明确提示这会占用大量会话上下文只在前两种方案不够时用交给 subagent让子代理去分析并只带回摘要例如 Use a subagent to analyze the entire src/ directory and summarize the main components避免主会话被长输出填满详见 subagents。另外两条来自文档的性能建议先用小范围具体文件或子目录试探再扩大用.gitignore排除node_modules/、构建产物等无关文件减少扫描量。限制与下一步几点边界需要注意focus的跨文件跟踪要求path是目录path指向单个文件时focus只在该文件内生效语言支持以文件扩展名注册未注册扩展名的文件会被跳过目录模式的输出里会有一行(N files skipped: no parser)标明跳过数量调用图基于 tree-sitter 的调用表达式解析输出反映的是源码中可解析的调用文档未承诺对间接调用如回调、动态分发的完整覆盖。完成一次调用链跟踪后如果确认要改动这个函数可以结合 codebase-analysis.md 中的目录结构模式analyze pathsrc/先了解所在模块的组织方式再带着DEF/IN给出的文件和行号进入实际修改大目录的分析摘要可继续交给 subagent 完成。【免费下载链接】goosean open source, extensible AI agent that goes beyond code suggestions - install, execute, edit, and test with any LLM项目地址: https://gitcode.com/GitHub_Trending/goose3/goose创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

KernelSU 编译错误修复:ksu.c 中 MODULE_IMPORT_NS 报错的 3 条解决路径

KernelSU 编译错误修复:ksu.c 中 MODULE_IMPORT_NS 报错的 3 条解决路径

KernelSU 编译错误修复:ksu.c 中 MODULE_IMPORT_NS 报错的 3 条解决路径 【免费下载链接】KernelSU A Kernel based root solution for Android 项目地址: https://gitcode.com/GitHub_Trending/ke/KernelSU 在老的非 GKI 内核上执行 KernelSU 编译错误排查时…

📅 2026/9/9 16:07:26
gRPC双向流全解析:从proto建模到生产级调优实践

gRPC双向流全解析:从proto建模到生产级调优实践

1. 双向流到底能解决什么问题:先别急着写代码,想清楚这三点我第一次接触gRPC双向流,是做一个分布式任务调度系统的状态上报模块。当时的需求看起来不复杂:各个worker节点要把任务执行的进度、日志、异常实时上报到调度中心调度中心…

📅 2026/9/9 16:07:26
XLA 如何用 Bazel 从源码构建并配置 CUDA 后端?

XLA 如何用 Bazel 从源码构建并配置 CUDA 后端?

XLA 如何用 Bazel 从源码构建并配置 CUDA 后端? 【免费下载链接】tensorflow An Open Source Machine Learning Framework for Everyone 项目地址: https://gitcode.com/GitHub_Trending/te/tensorflow XLA(Accelerated Linear Algebra&#xff0…

📅 2026/9/9 16:07:26
MORE NEWS

更多资讯

📰

ML-For-Beginners Notebook 用 pd.read_csv 加载课程数据集报 FileNotFoundError 怎么解决?

ML-For-Beginners Notebook 用 pd.read_csv 加载课程数据集报 FileNotFoundError 怎么解决? 【免费下载链接】ML-For-Beginners 12 weeks, 26 lessons, 52 quizzes, classic Machine Learning for all 项目地址: https://gitcode.com/GitHub_Trending/ml/ML-For-B…

📰

Czkawka 免费清理重复文件与相似图片:Krokiet 完整使用指南,一次扫描找回几十 GB 空间

Czkawka 免费清理重复文件与相似图片:Krokiet 完整使用指南,一次扫描找回几十 GB 空间 【免费下载链接】czkawka Multi functional app to find duplicates, empty folders, similar images etc. 项目地址: https://gitcode.com/GitHub_Trending/cz/cz…

📰

昇腾CANN数据排布与类型全解:从NCHW到NC1HWC0

写这篇博文之前,我先交代一下背景。我最近在调一个昇腾推理项目,模型是PyTorch训练完导出的ONNX,再用ATC工具转成om离线模型。整个过程里,最折磨人的不是模型结构改不好,而是数据和格式对不上:一会儿报shap…

📰

国内 AI 生图工具哪些品牌的功能更全面,设计师商家参考

国内 AI 生图工具哪些品牌的功能更全面,设计师商家参考在国内 AI 创作工具快速发展的当下,设计师与商家在选择平台时,不仅关注图像生成质量,更看重工作流的完整性、内容合规性及多模态协同能力。卓特视觉无限画布作为节点式 AI 创…

📰

Git入门指南:从init到远程协作的核心操作与实战技巧

直接开始。这篇是《Git入门指南》系列的第二篇,上一篇咱们把安装、配置、SSH 这些地基打好了,这一篇就进入正题:日常用 Git 干活最频繁的那批基本操作。从 git init 到 commit,从 diff 到 log,从分支到标签&#xff0c…

📰

KernelSU ksud 实战指南:部署位置、常用命令与排障清单

KernelSU ksud 实战指南:部署位置、常用命令与排障清单 【免费下载链接】KernelSU A Kernel based root solution for Android 项目地址: https://gitcode.com/GitHub_Trending/ke/KernelSU KernelSU 是 Android 平台的内核级 root 方案,其用户空…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬