en un clic
grepai-trace-callers
// Find function callers with GrepAI trace. Use this skill to discover what code calls a specific function.
// Find function callers with GrepAI trace. Use this skill to discover what code calls a specific function.
Reference for all GrepAI MCP tools. Use this skill to understand available MCP tools and their parameters.
Advanced search options in GrepAI. Use this skill for JSON output, compact mode, and AI agent integration.
Find function callees with GrepAI trace. Use this skill to discover what functions a specific function calls.
Build complete call graphs with GrepAI trace. Use this skill for recursive dependency analysis.
Supported programming languages in GrepAI. Use this skill to understand which languages can be indexed and traced.
Troubleshooting guide for GrepAI. Use this skill to diagnose and fix common issues.
| name | grepai-trace-callers |
| description | Find function callers with GrepAI trace. Use this skill to discover what code calls a specific function. |
This skill covers using grepai trace callers to find all code locations that call a specific function or method.
grepai trace callers answers: "Who calls this function?"
func Login(user, pass) {...}
↑
│
┌───────┴───────────────────┐
│ Who calls Login()? │
├───────────────────────────┤
│ • HandleAuth (auth.go:42) │
│ • TestLogin (test.go:15) │
│ • CLI (main.go:88) │
└───────────────────────────┘
grepai trace callers "FunctionName"
grepai trace callers "Login"
Output:
🔍 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)
For programmatic use:
grepai trace callers "Login" --json
Output:
{
"query": "Login",
"mode": "callers",
"count": 3,
"results": [
{
"file": "handlers/auth.go",
"line": 42,
"caller": "HandleAuth",
"context": "user.Login(ctx, credentials)"
},
{
"file": "handlers/auth_test.go",
"line": 15,
"caller": "TestLoginSuccess",
"context": "result := Login(testUser, testPass)"
},
{
"file": "cmd/main.go",
"line": 88,
"caller": "RunCLI",
"context": "err := auth.Login(username, password)"
}
]
}
grepai trace callers "Login" --json --compact
Output:
{
"q": "Login",
"m": "callers",
"c": 3,
"r": [
{"f": "handlers/auth.go", "l": 42, "fn": "HandleAuth"},
{"f": "handlers/auth_test.go", "l": 15, "fn": "TestLoginSuccess"},
{"f": "cmd/main.go", "l": 88, "fn": "RunCLI"}
]
}
TOON format offers ~50% fewer tokens than JSON:
grepai trace callers "Login" --toon
Output:
callers[3]:
- call_site:
context: "user.Login(ctx, credentials)"
file: handlers/auth.go
line: 42
symbol:
name: HandleAuth
...
Note:
--jsonand--toonare mutually exclusive.
GrepAI offers two extraction modes:
Uses regex patterns. Fast and dependency-free.
grepai trace callers "Login" --mode fast
Uses tree-sitter AST parsing. More accurate but requires tree-sitter.
grepai trace callers "Login" --mode precise
| Mode | Speed | Accuracy | Dependencies |
|---|---|---|---|
fast | ⚡⚡⚡ | Good | None |
precise | ⚡⚡ | Excellent | tree-sitter |
Configure trace in .grepai/config.yaml:
trace:
mode: fast # fast or precise
enabled_languages:
- .go
- .js
- .ts
- .py
- .php
- .rs
exclude_patterns:
- "*_test.go"
- "*.spec.ts"
| Language | Extensions |
|---|---|
| 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 |
# Find all usages before renaming
grepai trace callers "getUserById"
# Check impact of changing signature
grepai trace callers "processPayment"
# Who uses this core function?
grepai trace callers "validateToken"
# Find entry points to a module
grepai trace callers "initialize"
# Where is this function called from?
grepai trace callers "problematicFunction"
# Verify function usage before approving changes
grepai trace callers "deprecatedMethod"
If your function name is common, results may include unrelated code:
grepai trace callers "get" # Too common, many false positives
grepai trace callers "getUserProfile"
grepai trace callers "get" --json | jq '.results[] | select(.file | contains("auth"))'
Use together for comprehensive understanding:
# Find what Login does (semantic)
grepai search "user login authentication"
# Find who uses Login (trace)
grepai trace callers "Login"
# Count callers
grepai trace callers "MyFunction" --json | jq '.count'
# Get caller function names
grepai trace callers "MyFunction" --json | jq -r '.results[].caller'
# Get file paths only
grepai trace callers "MyFunction" --json | jq -r '.results[].file' | sort -u
import subprocess
import json
result = subprocess.run(
['grepai', 'trace', 'callers', 'Login', '--json'],
capture_output=True,
text=True
)
data = json.loads(result.stdout)
print(f"Found {data['count']} callers of Login:")
for r in data['results']:
print(f" - {r['caller']} in {r['file']}:{r['line']}")
❌ Problem: No callers found ✅ Solutions:
enabled_languagesgrepai watch to update symbol index❌ Problem: Too many false positives ✅ Solutions:
jq❌ Problem: Missing some callers ✅ Solutions:
--mode precise for better accuracygrepai watch firstjq or grepTrace callers result:
🔍 Callers of "Login"
Mode: fast
Language files scanned: 245
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)
Tip: Use --json for machine-readable output
Use --mode precise for more accurate results