Coding-Dev-Tools/deadcode

GitHub: Coding-Dev-Tools/deadcode

一个用于检测和移除 TypeScript/React/Next.js 项目中死代码的 CLI 工具。

Stars: 3 | Forks: 1

# 死代码 **检测并移除 TypeScript/React/Next.js 项目中未使用的导出、死路由、孤立的 CSS 以及未引用的组件。** [![PyPI](https://img.shields.io/pypi/v/deadcode)](https://pypi.org/project/deadcode/) [![Python](https://img.shields.io/pypi/pyversions/deadcode)](https://pypi.org/project/deadcode/) [![License](https://img.shields.io/pypi/l/deadcode)](https://github.com/Coding-Dev-Tools/deadcode/blob/main/LICENSE) [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/5e22d010fa121652.svg)](https://github.com/Coding-Dev-Tools/deadcode/actions/workflows/test.yml) [![开源替代方案](https://img.shields.io/badge/Open_Source_Alternative-%E2%87%92-blue?logo=opensourceinitiative)](https://www.opensourcealternative.to/project/deadcode) [![LibHunt](https://img.shields.io/badge/LibHunt-%E2%87%92-blue?logo=codeigniter)](https://www.libhunt.com/r/Coding-Dev-Tools/deadcode) [![Awesome Python](https://img.shields.io/badge/Awesome_Python-%E2%87%92-blue?logo=python)](https://github.com/uhub/awesome-python) **为什么选择 DeadCode?** ## 快速开始 ``` pip install deadcode # 扫描当前项目 deadcode scan # 扫描特定项目 deadcode scan -p /path/to/project # 预览可移除的死代码 deadcode remove --dry-run # 移除已确认的死代码 deadcode remove ``` ## 命令 ### `deadcode scan` 扫描 TypeScript/React/Next.js 项目中所有类别的死代码。 ``` deadcode scan # Scan current directory deadcode scan -p /path/to/project # Scan specific project deadcode scan --json-output # Machine-readable JSON deadcode scan -c unused_export # Filter by category deadcode scan -i "generated/" # Ignore paths ``` ### `deadcode remove` 在预览后移除死代码。务必先使用 `--dry-run` 进行预览。 ``` deadcode remove --dry-run # Preview changes (no writes) deadcode remove # Apply removals deadcode remove -c orphaned_css # Remove only orphaned CSS ``` ### `deadcode stats` 快速概览项目中的死代码。 ``` deadcode stats ``` ## 类别 | 类别 | 描述 | 示例 | | ------------------ | ----------------------------------------- | ------------------------------------------------------------ | | `unused_export` | 导出的名称未在其他地方导入 | `export function oldHelper()` 没有任何使用者 | | `dead_route` | Next.js 路由没有内部链接 | `app/legacy/page.tsx` 不再被导航链接 | | `orphaned_css` | CSS 类未在 JSX 中引用 | `styles.module.css` 中的 `.oldClass` 没有任何使用处 | | `unreferenced_component` | 定义的 React 组件但从未导入 | 一个没有导入点的 `` 组件 | ## 功能特点 - **未使用导出检测** — 找出项目中已导出但从未导入的函数、类型、类、接口、枚举和常量 - **死路由检测** — 检测 Next.js App Router 项目中无法访问的页面组件 - **孤立 CSS 检测** — 找出已定义但从未在 TSX/JSX 文件中引用的 CSS module 类 - **安全自动移除** — `--dry-run` 预览模式精确显示在执行更改前将被删除的内容 - **全项目 AST 分析** — 基于正则表达式的扫描覆盖整个代码库的导出/导入模式、路由检测、CSS 类使用情况和组件引用 - **Monorepo 支持** — 通过忽略模式高效处理大型项目 - **CI 集成** — 为自动化流水线和门控提供 JSON 输出 ## 忽略模式 ``` deadcode scan -i "generated/" -i "**/*.generated.ts" ``` 默认忽略:`node_modules/`, `.git/`, `.next/`, `dist/`, `build/`, `public/`, `static/` ## CI/CD 集成 ``` # 为CI生成报告 deadcode scan --json-output > deadcode-report.json # 若发现任何死路由则CI失败 deadcode scan -c dead_route --fail 1 # 若发现总数超过阈值则CI失败 deadcode scan --fail 10 # 跟踪死代码随时间变化的趋势 deadcode scan --json-output > baseline-$(date +%Y-%m-%d).json ``` ## 配置 (.deadcode.yml) 在你的项目根目录创建一个 `.deadcode.yml` 文件: ``` # .deadcode.yml ignore: - "generated/" - "**/*.generated.ts" - "src/legacy/" categories: - unused_export - dead_route - orphaned_css - unreferenced_component # 若发现数大于等于此数值则返回退出码1(用于CI拦截) fail_threshold: 10 ``` CLI 标志会覆盖配置文件的设置。 ## 存储 - `.deadcode.yml` — 项目配置(忽略模式、类别) - `deadcode-baseline.json` — 保存的扫描结果,用于趋势跟踪 ## 路线图 - [ ] VS Code 扩展,内联装饰显示死代码 - [ ] ESLint 插件集成,支持自动修复 - [ ] Webpack/Rollup 打包分析钩子 - [ ] MCP 服务器,用于 AI 辅助清理 - [ ] 带缓存的增量扫描 - [ ] 用于 PR 评论的 GitHub Actions 注释器 ## 许可证 MIT — 详情见 [LICENSE](LICENSE)
标签:React, SOC Prime, Syscalls, TypeScript, 云安全监控, 代码优化, 代码分析, 代码清理, 凭证管理, 子域名暴力破解, 孤立CSS, 安全插件, 开发工具, 未使用导出, 未引用组件, 死代码检测, 死路由, 自动化检测, 逆向工具, 静态分析, 项目清理