react-doctor
react-doctor 是一款专为 React 开发者打造的智能代码诊断工具,旨在帮助团队快速发现并修复代码库中的潜在问题。只需运行一条命令,它就能自动识别项目框架(如 Next.js、Vite 等)和 React 版本,并行执行深度静态分析与死代码检测。
该工具重点解决了 React 开发中常见的状态管理混乱、性能瓶颈、安全漏洞、架构缺陷以及未使用代码堆积等痛点。扫描结束后,它会生成一份包含具体修改建议的诊断报告,并给出一个直观的 0–100 健康评分,让开发者能清晰掌握代码质量现状。
react-doctor 特别适合前端工程师、技术负责人及追求高质量代码的团队使用。其独特亮点在于内置了 60 多条针对 React 生态的最佳实践规则,涵盖可访问性、包体积优化及框架特性检查,且规则会根据项目配置自动调整。此外,它还支持与 Claude Code、GitHub Copilot 等主流 AI 编程助手集成,将诊断规则直接赋能给编码代理,实现更智能的自动修复。无论是本地日常开发,还是通过 GitHub Actions 进行 CI/CD 流程管控,react-doctor 都能以轻量无侵入的方式提升项目的整体健壮性。
使用场景
某电商团队在重构遗留 React 项目并接入 AI 编程助手时,面临代码质量参差不齐且难以量化评估的困境。
没有 react-doctor 时
- 人工审查效率低:资深开发者需花费数小时手动排查状态管理混乱、副作用滥用等隐蔽问题,严重拖慢重构进度。
- AI 修复不精准:编码代理(Coding Agents)因缺乏统一的 React 最佳实践约束,常生成包含内存泄漏风险或冗余渲染的代码。
- 死代码清理困难:项目中存在大量未使用的组件、类型定义和重复逻辑,传统工具难以精准识别,导致打包体积虚高。
- 质量评估主观化:缺乏客观的健康度评分,团队无法量化重构成果,难以向管理层汇报技术债务的偿还情况。
使用 react-doctor 后
- 一键全面诊断:运行单条命令即可并行扫描 60+ 项规则,自动识别架构缺陷、安全漏洞及性能瓶颈,将数小时的工作压缩至分钟级。
- 赋能 AI 代理:通过
install命令让 Claude Code 或 Copilot 等助手内建 47+ 条 React 规范,确保 AI 生成的代码从源头符合高性能与正确性标准。 - 精准清除冗余:自动检测并列出未使用的文件、导出项及重复代码,指导团队安全删除死代码,显著优化构建产物大小。
- 量化健康得分:输出 0-100 的健康评分(如从 45 分提升至 82 分),用直观数据展示代码库的“健康状况”,让技术改进成果一目了然。
react-doctor 不仅将模糊的代码质量转化为可量化的健康分数,更成为连接人类开发者与 AI 助手的桥梁,确保 React 项目在快速迭代中始终保持架构整洁与高性能。
运行环境要求
- Linux
- macOS
- Windows
未说明
未说明

快速开始
让编码助手诊断并修复你的 React 代码。
只需一条命令,即可扫描你的代码库中的安全、性能、正确性及架构问题,并输出一个包含可操作诊断信息的 0–100 分 评分。
立即体验 →
https://github.com/user-attachments/assets/07cc88d9-9589-44c3-aa73-5d603cb1c570
工作原理
React Doctor 会检测你使用的框架(Next.js、Vite、Remix 等)、React 版本以及编译器配置,然后以 并行方式 执行两轮分析:
- Lint 检查:涵盖状态与副作用、性能、架构、包大小、安全、正确性、无障碍访问以及特定框架(Next.js、React Native)相关的 60 多条规则。这些规则会根据你的项目配置自动启用或禁用。
- 死代码检测:识别未使用的文件、导出、类型和重复代码。
诊断结果会经过你的配置过滤,并按严重程度打分(错误比警告权重更高),最终生成一个 0–100 的健康评分(75+ 优秀,50–74 需改进,<50 危急)。
安装
在你的项目根目录运行以下命令:
npx -y react-doctor@latest .
使用 --verbose 参数可查看受影响的文件和行号:
npx -y react-doctor@latest . --verbose
为你的编码助手安装
让你的编码助手掌握所有 47 条以上的 React 最佳实践规则。在你的项目根目录运行以下命令:
npx -y react-doctor@latest install
系统会提示你选择要为其安装的已检测到的助手。使用 --yes 参数可跳过提示,直接为所有检测到的助手安装。
支持 Claude Code、Codex、GitHub Copilot、Gemini CLI、Cursor、OpenCode、Factory Droid 和 Pi 等工具。
GitHub Actions
- uses: actions/checkout@v5
with:
fetch-depth: 0 # required for --diff
- uses: millionco/react-doctor@main
with:
diff: main
github-token: ${{ secrets.GITHUB_TOKEN }}
| 输入 | 默认值 | 描述 |
|---|---|---|
directory |
. |
要扫描的项目目录 |
verbose |
true |
显示每条规则对应的文件详情 |
project |
要扫描的工作区项目(逗号分隔) | |
diff |
用于差异模式的基础分支。仅扫描发生更改的文件 | |
github-token |
在 pull_request 事件中设置时,会将发现的问题作为 PR 评论发布 |
|
fail-on |
error |
当出现诊断结果时退出并返回错误码:error、warning 或 none |
offline |
false |
跳过向 react.doctor API 发送诊断信息 |
node-version |
20 |
要使用的 Node.js 版本 |
该 Action 会输出一个 score(0–100),你可以在后续步骤中使用。
选项
用法:react-doctor [directory] [options]
选项:
-v, --version 显示版本号
--no-lint 跳过 Lint 检查
--no-dead-code 跳过死代码检测
--verbose 显示每条规则对应的文件详情
--score 仅输出分数
-y, --yes 跳过提示,扫描所有工作区项目
--project <name> 选择工作区项目(多个项目用逗号分隔)
--diff [base] 仅扫描与基础分支相比发生变化的文件
-h, --help 显示命令帮助
浏览器 API
导入 react-doctor/browser 可以运行与 react-doctor/api 的 diagnose 方法相同的 诊断合并、基于配置的过滤、计时和评分流程,但输入参数由调用方提供:包括 project 元数据、一个虚拟的 projectFiles 映射(内容以相对于 rootDirectory 的路径为键),用于解析忽略和抑制规则;以及一个 runOxlint 回调函数,可在你的环境中执行 Lint 检查(例如使用带有 oxlint 的 Web Worker)。
Git 历史、真实文件系统的发现、knip、CLI、暂存文件检测以及交互式提示等功能在浏览器版本中 不可用;这些功能应仅在 Node.js 环境中使用,或者由你自行实现替代方案。react-doctor/worker 重新导出了相同的面向浏览器的模块,适用于 Worker 目标。
如果你在浏览器中直接调用 diagnoseCore,请同时传递来自本包的 calculateDiagnosticsScore 函数(在 react-doctor/browser 中重命名为 calculateScore),以避免捆绑包引入仅限 Node.js 的代理代码。
配置
在你的项目根目录创建一个 react-doctor.config.json 文件,以自定义行为:
{
"ignore": {
"rules": ["react/no-danger", "jsx-a11y/no-autofocus", "knip/exports"],
"files": ["src/generated/**"]
}
}
你也可以在 package.json 中使用 "reactDoctor" 键来代替:
{
"reactDoctor": {
"ignore": {
"rules": ["react/no-danger"]
}
}
}
如果两者都存在,react-doctor.config.json 将优先生效。
配置选项
| 键 | 类型 | 默认值 | 描述 |
|---|---|---|---|
ignore.rules |
string[] |
[] |
要抑制的规则,使用诊断输出中显示的 plugin/rule 格式(例如 react/no-danger、knip/exports、knip/types) |
ignore.files |
string[] |
[] |
要排除的文件路径,支持 glob 模式(src/generated/**、**/*.test.tsx) |
lint |
boolean |
true |
启用或禁用 lint 检查(与 --no-lint 相同) |
deadCode |
boolean |
true |
启用或禁用死代码检测(与 --no-dead-code 相同) |
verbose |
boolean |
false |
显示每条规则的文件详情(与 --verbose 相同) |
diff |
boolean | string |
— | 强制启用 diff 模式(true)或固定基准分支("main")。设置为 false 可禁用自动检测。 |
failOn |
"error" | "warning" | "none" |
"none" |
当诊断信息达到指定严重级别或更高时,以错误码退出程序 |
customRulesOnly |
boolean |
false |
禁用内置的 react/jsx-a11y/compiler 规则,仅保留 react-doctor/* 插件规则 |
share |
boolean |
true |
扫描完成后显示分享结果的 URL |
textComponents |
string[] |
[] |
仅适用于 React Native。指定其子组件不应触发 rn-no-raw-text 的组件名称(例如 ["MyText", "Label.Bold"]) |
CLI 标志始终会覆盖配置值。
Node.js API
你也可以以编程方式使用 React Doctor:
import { diagnose } from "react-doctor/api";
const result = await diagnose("./path/to/your/react-project");
console.log(result.score); // { score: 82, label: "Good" } 或 null
console.log(result.diagnostics); // Diagnostic 对象数组
console.log(result.project); // 检测到的框架、React 版本等。
diagnose 函数接受一个可选的第二个参数:
const result = await diagnose(".", {
lint: true, // 运行 lint 检查(默认:true)
deadCode: true, // 运行死代码检测(默认:true)
});
每个诊断对象的结构如下:
interface Diagnostic {
filePath: string;
plugin: string;
rule: string;
severity: "error" | "warning";
message: string;
help: string;
line: number;
column: number;
category: string;
}
热门开源项目的评分
| 项目 | 分数 | 分享 |
|---|---|---|
| tldraw | 84 | 查看 |
| excalidraw | 84 | 查看 |
| twenty | 78 | 查看 |
| plane | 78 | 查看 |
| formbricks | 75 | 查看 |
| posthog | 72 | 查看 |
| supabase | 69 | 查看 |
| onlook | 69 | 查看 |
| payload | 68 | 查看 |
| sentry | 64 | 查看 |
| cal.com | 63 | 查看 |
| dub | 62 | 查看 |
贡献
想贡献代码吗?请查看代码库并提交 PR。
git clone https://github.com/millionco/react-doctor
cd react-doctor
pnpm install
pnpm -r run build
本地运行:
node packages/react-doctor/dist/cli.js /path/to/your/react-project
许可证
React Doctor 是 MIT 许可证下的开源软件。
版本历史
react-doctor@0.0.382026/04/170.0.12026/02/19常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
opencode
OpenCode 是一款开源的 AI 编程助手(Coding Agent),旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件,而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码,还是排查难以定位的 Bug,OpenCode 都能通过自然语言交互高效完成,显著减少开发者在重复性劳动和上下文切换上的时间消耗。 这款工具专为软件开发者、工程师及技术研究人员设计,特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构,这意味着用户可以审查代码逻辑、自定义行为策略,甚至私有化部署以保障数据安全,彻底打破了传统闭源 AI 助手的“黑盒”限制。 在技术体验上,OpenCode 提供了灵活的终端界面(Terminal UI)和正在测试中的桌面应用程序,支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具,安装便捷,并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客,还是渴望提升产出的独立开发者,OpenCode 都提供了一个透明、可信
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。