Same codebase. Same model. Same question.
One uses the dependency graph. One doesn't.
Multi-language2,382 symbolsClaude Opus 4.6
Includes API layer with minimal endpoints, DI-registered services, CLI commands (Spectre.Console), background sync jobs, and repository pattern with interface-based dispatch.
With ctxo: Single find_dead_code call uses the pre-built dependency graph to analyze all 2,382 symbols at once.
Without ctxo: Manual static analysis using Grep + Read, scanning files one at a time across 8 rounds of pattern matching.
| Metric | With ctxo | Without ctxo | Delta |
|---|---|---|---|
| Iterations (rounds) | 1 | 8 | 8x fewer |
| Tool calls | 5 | ~35 | 7x fewer |
| Input tokens | ~30,000 | ~50,000 | 40% less |
| Output tokens | ~3,000 | ~6,000 | 50% less |
| Execution time | ~35 seconds | ~7 minutes | 12x faster |
| Symbols analyzed | 2,382 (full graph) | ~200 (sampled) | 12x coverage |
| Confirmed dead code | 2 classes + 8 suspicious | 4 classes + 4 fields + 12 counters | Full graph coverage |
| False positive triage | 203 categorized by type | Not applicable | Auto-classified |
ctxo provides unmatched breadth - it analyzed every symbol in the codebase and correctly classified 203 framework false positives that manual analysis never even encountered. It found the same 2 core dead classes instantly.
Manual analysis found more granular depth - field-level dead code, never-incremented counters, and behavioral patterns that require reading individual lines of code. It also found 2 additional dead classes (StringExtensions, ApiErrorMapping) that ctxo flagged but didn't highlight.
The ideal workflow: Start with ctxo for full coverage and false positive triage, then do targeted manual deep-dives on suspicious areas. This gives you both breadth AND depth in a fraction of the time.
find_dead_code to analyze the full dependency graph.totalSymbols: 2,382 | reachable: 1,723 | unusedExports: 203 | orphanFiles: 0Found: ReadOptions unused field in AuthorizationEndpointFilterCommented-out counters in CalendarCollectorStatusDeleted, StatusInactive - never referencedtotalThrottleCount, totalGatewayErrorCount, totalRetryCount - never incremented in 4 files