SuperAPI AI 工具集

grepai-trace-callers

编程与开发

查看项目

更新于 10-15 14:02

技能介绍

用途

GrepAI Trace Callers 用于查找调用某个特定函数或方法的所有代码位置,即回答“谁调用了这个函数?”。典型使用场景包括:重构前查找函数的全部使用点、理解函数依赖关系、变更前的影响分析,以及代码导航与探索。

主要能力

  • 查找调用者:给定函数名,返回调用该函数的调用者名称、文件路径、行号与调用上下文。
  • 多种输出格式:默认人类可读输出;--json 输出结构化 JSON;--json --compact 输出面向 AI 优化的紧凑 JSON;--toon(v0.26.0+)输出 TOON 格式,据资料称比 JSON 减少约 50% token。注意 --json 与 --toon 互斥。
  • 两种提取模式:
    • fast(默认):使用正则模式,速度快、无依赖。
    • precise:使用 tree-sitter AST 解析,更准确,但需要 tree-sitter。
  • 配置能力:可在 .grepai/config.yaml 中配置 trace 的 mode(fast 或 precise)、enabled_languages(如 .go、.js、.ts、.py、.php、.rs)以及 exclude_patterns(如 *_test.go、*.spec.ts)。
  • 支持语言:Go(.go)、JavaScript(.js、.jsx)、TypeScript(.ts、.tsx)、Python(.py)、PHP(.php)、C/C++(.c、.h、.cpp、.hpp、.cc、.cxx)、Rust(.rs)、Zig(.zig)、C#(.cs)、Java(.java)、Pascal/Delphi(.pas、.dpr)。

使用方式

基本命令:

grepai trace callers "FunctionName"

示例:

grepai trace callers "Login"

输出示例(人类可读):

🔍 Callers of "Login"

Found 3 callers:

1. HandleAuth
   File: handlers/auth.go:42
   Context: user.Login(ctx, credentials)

2. TestLoginSuccess
   File: handlers/auth_test.go:15
   Context: result := Login(testUser, testPass)

3. RunCLI
   File: cmd/main.go:88
   Context: err := auth.Login(username, password)

JSON 输出:

grepai trace callers "Login" --json

输出结构包含 query、mode、count 与 results 数组,results 中每项含 file、line、caller、context。

紧凑 JSON(AI 优化):

grepai trace callers "Login" --json --compact

输出使用 q、m、c、r 等短键,r 中每项含 f、l、fn。

TOON 输出(v0.26.0+):

grepai trace callers "Login" --toon

指定提取模式:

grepai trace callers "Login" --mode fast
grepai trace callers "Login" --mode precise

配置示例(.grepai/config.yaml):

trace:
  mode: fast  # fast or precise

  enabled_languages:
    - .go
    - .js
    - .ts
    - .py
    - .php
    - .rs

  exclude_patterns:
    - "*_test.go"
    - "*.spec.ts"

适用场景

  • 重构前:重命名前查找全部使用点,例如 grepai trace callers "getUserById";修改签名前评估影响,例如 grepai trace callers "processPayment"。
  • 理解代码库:查找核心函数的使用者,例如 grepai trace callers "validateToken";查找模块入口,例如 grepai trace callers "initialize"。
  • 调试:定位问题函数的调用来源,例如 grepai trace callers "problematicFunction"。
  • 代码审查:批准变更前验证函数使用情况,例如 grepai trace callers "deprecatedMethod"。
  • 与语义搜索结合:grepai search "user login authentication" 查找 Login 做什么,grepai trace callers "Login" 查找谁使用 Login。
  • 脚本化使用:Bash 中可用 jq 统计调用者数量、提取调用者函数名或文件路径;Python 中可通过 subprocess 调用并解析 JSON。

限制与注意事项

  • 函数名区分大小写,需使用准确名称。
  • 若函数名过于常见(如 get),结果可能包含无关代码,产生大量误报;建议使用更具体的名称,或通过 jq 按路径过滤,或在配置中添加排除模式。
  • 若未找到调用者,可检查函数名拼写、确认文件类型在 enabled_languages 中,并运行 grepai watch 更新符号索引。
  • 若遗漏部分调用者,可尝试 --mode precise 提高准确性,并检查文件是否位于忽略模式中。
  • precise 模式依赖 tree-sitter。
  • --json 与 --toon 互斥。
  • 最佳实践:使用精确函数名、先运行 grepai watch 检查符号索引、脚本中使用 JSON、结合语义搜索、对大量结果使用 jq 或 grep 过滤。

暂未提供的信息

资料未提供该技能的收费、价格、平台限制或具体性能数据。