Cleaning WoW Addons
Expert guidance for finding and removing cruft in addon codebases.
Related Commands
MCP Tools
| Task | MCP Tool |
|------|----------|
| Find Dead Code | addon.deadcode(addon="MyAddon") |
| Find Stale Docs | docs.stale(addon="MyAddon") |
| Filter by Confidence | addon.deadcode(addon="MyAddon", include_suspicious=false) |
Capabilities
- Dead Code Detection — Find unused functions, orphaned files, dead exports
- Stale Docs Detection — Find broken links, outdated refs, version drift
- Confidence Levels — Definite (100%), Likely (90%+), Suspicious (70%+)
Detection Categories
Dead Code (addon.deadcode)
| Category | Description |
|----------|-------------|
| unused_function | Functions defined but never called |
| orphaned_file | Lua files not in TOC |
| dead_export | Exported values never used |
| unused_library | Libraries in Libs/ never used |
| stale_event | Event handlers for unregistered events |
| commented_code | Large blocks of commented-out code |
Stale Docs (docs.stale)
| Category | Description |
|----------|-------------|
| dead_link | Internal links to non-existent files |
| dead_reference | Mentions of functions/files that don't exist |
| version_drift | Old version numbers in documentation |
| relative_staleness | Docs not updated in many commits |
Workflow
Quick Cleanup
- Run
addon.deadcodewithinclude_suspicious=falsefor high-confidence issues only - Remove identified dead code
- Run
docs.staleto find documentation issues - Fix broken links and update outdated references
Deep Cleanup
- Run
addon.deadcodewith all confidence levels - Manually verify suspicious findings before removal
- Run
docs.stalewith all techniques - Update documentation to match current code
Confidence Interpretation
| Level | Meaning | Action | |-------|---------|--------| | Definite | 100% certain (e.g., file not in TOC) | Safe to remove | | Likely | 90%+ certain (e.g., function never called) | Review briefly, usually safe | | Suspicious | 70%+ certain (e.g., dynamic code patterns) | Manual verification required |
Best Practices
- Start with definite issues — These are safe to fix immediately
- Check dynamic patterns —
_G,rawget,loadstringmay hide usage - Preserve intentional dead code — Mark with
-- KEEP:comment if needed - Update docs after code changes — Run
docs.staleafter refactoring