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