Find and auto-delete dead code across 9 languages — with git intelligence and auto PR
Project description
☠ Dead Code Archaeologist
Find unused functions. Delete them safely. Open a PR. All in one command.
Dead Code Archaeologist scans your codebase for dead functions using a multi-signal confidence engine — combining static call graph analysis with git history — then automatically deletes them on an isolated branch, runs your test suite, and opens a GitHub PR.
Install
pip install deadcode-archaeologist
Quick start
# Scan and see what's dead (no changes)
deadcode ./my-project --explain
# Generate a full interactive HTML report
deadcode-report ./my-project
# Preview what would be deleted (safe — no changes)
deadcode-clean ./my-project --dry-run
# Full auto-clean: delete → test → branch → PR
deadcode-clean ./my-project --min-confidence 85
How it works
- AST scan — tree-sitter parses every function definition and call across all supported languages
- Git analysis — last commit date, author count, and commit frequency per file
- Confidence scoring — 5 signals combine into a 0–100 score
- Surgical deletion — functions removed by precise byte ranges, no broken syntax
- Tests run — your test suite runs automatically before anything is committed
- PR opened — a GitHub PR with full per-function documentation
Supported languages
Python, Dart/Flutter, JavaScript, TypeScript, Go, Java, Rust, Kotlin, Ruby, Swift
Commands
| Command | What it does |
|---|---|
deadcode ./src --explain |
Scan and print ranked table |
deadcode ./src --json-output |
Output results as JSON |
deadcode-report ./src |
Generate HTML dashboard |
deadcode-clean ./src --dry-run |
Preview deletions, no changes |
deadcode-clean ./src --min-confidence 85 |
Full auto-clean + PR |
deadcode-clean ./src --no-pr |
Clean without opening PR |
deadcode-clean ./src --lang dart |
Only clean Dart files |
Confidence score
| Signal | Points |
|---|---|
| Zero callers in codebase | +45 |
| Git age (2+ years untouched) | +20 |
| Single author ever | +15 |
| Callers are themselves dead | +10 |
| Very few commits (≤2) | +10 |
Verdicts
- Safe to delete (80–100) — multiple signals agree, auto-deleted by
deadcode-clean - Review first (50–79) — likely dead, verify manually before deleting
- Needs runtime data (40–49) — may be called dynamically, add coverage tracing first
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file archaeologist-0.6.4.tar.gz.
File metadata
- Download URL: archaeologist-0.6.4.tar.gz
- Upload date:
- Size: 40.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
808c06ab0f14122507662bea7ebb54516540beada457d8157895e7bba9a2d732
|
|
| MD5 |
47d2e7308b2f1b56e0ac3cc54395aeec
|
|
| BLAKE2b-256 |
a3de38481ae282fd139aab8a2a34409159e742d339e3013722d4205070ed570f
|
File details
Details for the file archaeologist-0.6.4-py3-none-any.whl.
File metadata
- Download URL: archaeologist-0.6.4-py3-none-any.whl
- Upload date:
- Size: 44.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
45ba8b7e9804e2b1784d984631c5576a08c3353b1f3398c3354abb98389820f8
|
|
| MD5 |
18b8e31ef57367551e00a3523c330ce7
|
|
| BLAKE2b-256 |
aa8a50cc6c714af5e095dba360ae363630f79742009d6f7a27517baffb594cb6
|