← ClaudeAtlas

remove-deadcode-pylisted

按需清除 Python 项目的死代码(全仓范围,非任务收尾):Ruff 快通道 + vulture 分级检测 + 引用/动态访问定罪 + 分批原子删除。Triggers: remove dead code, dead code python, unused code python, 死代码清理, Python 清理死代码, 删除未用代码.
YSAA1/harness-workflow · ★ 3 · AI & Automation · score 76
Install: claude install-skill YSAA1/harness-workflow
# Remove Dead Code (Python) 删除 Python 项目中的未用代码。检测靠工具,定罪靠证据,删除分小批,不追求一次清零。 本 skill 是全仓清理的按需入口,不做任务收尾(收尾走 `cleanup`)。方法思路受 code-yeongyu/oh-my-openagent 的 remove-deadcode 启发(未复制文本),工具行为以 vulture/Ruff/deptry 官方文档为准。非 Python 生态的全仓扫描不在本 skill 范围:JS/TS 用 knip,Go 用 `go tool deadcode`,Rust 用 cargo-machete。 ## 流程 1. **定入口(先圈出不可删区)**:`pyproject.toml`/`setup.cfg` 的 `[project.scripts]` 与 `entry_points`、`__main__.py`、`app.py`/`run.py`/`manage.py`、`conftest.py`、Django 的 models/admin/urls/migrations、Celery tasks、插件注册点。入口与框架自动发现面 = 不可删。 2. **快通道**:`ruff check --select F401,F841` 查未用导入/变量;`--fix` 只接受安全修复——`__init__.py` 里的 F401 是 re-export 语义(Ruff 标记为不安全),确认 `__all__` 前不手动删。装了 deptry 可加跑 `deptry .` 查未用依赖。 3. **主扫描**:`vulture <src> --min-confidence 60`。60%(属性/类/函数)只是线索;90%(导入)可进定罪;100%(不可达代码)基本可信,仍走第 4 步。 4. **定罪(三重证据,缺一降级到 needs-review)**: - grep 全仓零引用——范围含源码、字符串、注释、配置、文档、CI/workflow、Makefile/Dockerfile; - `git log --follow <file>` 溯源:为已放弃的功能而加、或长期无人触碰,加强判断;近期活跃的降级处理; - 可选佐证:测试覆盖率(`coverage report`)中从未执行 ≠ 死代码,只作加分项。 5. **守卫清单(命中即保留,无论工具怎么说)**: - `getattr` / `globals()` / `eval` / `exec` / `__import__` / `importlib` 可达范围内的动态引用; - 注册型装饰器:`@app.route`、`@router.*`、`@cli.command`、`@click.*`、`@pytest.fixture`、`@celery.task` 及自定注册装饰器(grep 装饰器定义处确认注册机制); - dunder 方法、抽象方法/Protocol 实现、运算符重载、dataclass/Pydantic 字段; - `__init__.py` 的 re-export 与 `__all__`; - 被测试文件引用 = 合法消费者; - 打包配置引用:`pyproject.toml` 的 include/packages、setup.cfg、MANIFEST.in。 6. **分批原子删除**:每批一个模块或一组相关符号;删后跑项目最