mcpField
A
ast-grep-outline

ast-grep-outline

github.com/ast-grep开发8992.5k 次安装7 周前更新
代码仓库

关于 ast-grep-outline

使用 ast-grep outline 生成源代码的紧凑结构图,帮助开发者先查看文件或目录的声明、成员和行号,再定位需要阅读的代码。它提供本地语法视图,不解析引用或构建调用图。

主要功能

  1. 01列出顶层声明及成员
  2. 02显示代码行号和签名
  3. 03按导出、导入或结构筛选
  4. 04按名称或类型筛选项目
  5. 05输出文件结构 JSON 流

适用场景

  1. 01编辑前快速了解文件结构
  2. 02梳理陌生目录的公开 API
  3. 03查找符号成员及其行号
  4. 04检查文件依赖方向
  5. 05编辑后概览变更文件结构

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/ast-grep/agent-skill --skill ast-grep-outline

安装后在 Claude Code 中输入/ast-grep-outline确认已加载。

详细介绍

使用 ast-grep outline

ast-grep outline 会打印源代码的精简结构图,并附带行号:顶层条目(导入、函数、类、结构体、接口、模块、枚举)及其直接成员(字段、方法、构造函数、枚举变体)。这是本地的纯语法视图,开销很低,可以在完整读取文件之前运行。

分阶段读取代码:通过搜索或文件名找到候选文件,查看其 outline,然后只打开 outline 指向的源代码范围。默认行为会根据输入调整:文件会显示其局部结构和成员摘要;目录则只会按组显示其导出接口。

适用场景

编辑前了解文件。 在阅读实现细节之前,先获取目录、依赖项和公共入口:

ast-grep outline <file>
ast-grep outline <file> --items imports
ast-grep outline <file> --items exports

梳理陌生目录。 扫描子树的公共接口,然后在确定要查找的内容后按符号类型缩小范围:

ast-grep outline <dir> --items exports
ast-grep outline <dir> --type struct,enum,function

深入查看已知符号。 搜索找到可能的名称后,列出其成员及行号,而不是读取整个函数体:

ast-grep outline <file> --match <symbol> --type class --view expanded

追踪依赖方向。 查找导入某个包或模块的文件,以确定更改应放在哪里:

ast-grep outline <dir> --items imports --view signatures

编辑后审查更改的文件。 Git 会告诉你哪些内容发生了变化;outline 会概述更改后的结构和公共接口:

ast-grep outline $(git diff --name-only HEAD) --items exports

参数指南

  • --items <KIND> 选择顶层条目:structure 表示局部声明(文件的默认值),exports 表示公共 API(目录的默认值),imports 表示依赖项,all 表示同时关注导入和导出关系。
  • --view <VIEW> 控制详细程度,由少到多依次为:names 用于扫描目录,signatures 为每个条目显示一行,digest 显示签名和成员名称,expanded 为每个成员显示一行及其行号。
  • --match <REGEX> 按名称或签名筛选顶层条目。使用 Rust 正则表达式,区分大小写;不会匹配成员。
  • --type <TYPE[,TYPE...]> 仅保留部分顶层符号类型,例如 --type class,function。method,field 之类的成员类型不会匹配顶层条目。
  • --pub-members 在视图显示成员时隐藏私有成员。
  • --json=stream 为每个文件输出一个带精确范围的 JSON 对象。仅在需要通过管道传输或后处理条目时使用;导航时优先使用文本格式。

限制

outline 显示的是局部语法结构。它不会解析引用、推断类型、追踪重新导出链,也不会构建调用图。如需回答这些问题,请使用 ast-grep run、rg 或基于编译器的工具,再对它们找到的候选文件使用 outline。

评论

支持 Markdown