跳到主要内容
CNode

做了个 NestJS 静态分析工具 nestjs-doctor,一行命令给项目打分

分享
Ffranciscuo发布于 4 小时前
0220

写 NestJS 的时候,用 Copilot / Cursor / Claude Code 生成的代码经常有几类框架层面的错:模块循环依赖、Controller 上忘了加 Guard、Controller 里直接调 ORM、注册了但没人用的 provider。ESLint 的 Nest 插件基本不查这些,Nest Devtools 得把应用跑起来才能看。

所以我做了 nestjs-doctor,一个开源(MIT)的 NestJS 静态分析工具,直接读源码:

npx nestjs-doctor@latest .

不启动应用,不调 LLM,代码不上传。扫完给一个 0 到 100 的分,每条问题带文件和行号,同一个 commit 在本地和 CI 得分一致。

加 --report 会生成一个 HTML 报告:

  • 模块依赖图,循环依赖会高亮
  • 每个 HTTP 接口的调用链,从 Controller 到 Service 再到 Repository,一眼看到哪个接口直接碰了数据库
  • Prisma / TypeORM / Drizzle / MikroORM 的 ER 图,从实体代码里读出来
  • 在 main.ts 加几行、真实启动一次,再加 --timings <path>,多一页启动耗时,能看到哪个 provider 拖慢了启动

内置规则分五类:安全、正确性、架构、性能、数据库 schema。团队自己的约定可以写成自定义规则,一个 ts-morph 文件放进 customRulesDir 就能加载,比如"Controller 里不许直接用 Repository"。

也能跑在 pre-commit、GitHub Action(只评论 PR 新引入的问题)和 VS Code 里,支持 monorepo。国内走 npmmirror 也行,版本是同步的。

公开项目今天的分:twentyhq/twenty 99,immich 97,nocodb 95。

仓库:https://github.com/RoloBits/nestjs-doctor

文档(英文):https://www.nestjs.doctor/docs?from=cnode

我是作者,欢迎提 issue,尤其想知道国内团队常见的 Nest 项目结构里有没有规则没覆盖到的。

查看回复

回复 (0)

暂无回复,成为第一个参与讨论的人。

参与回复

登录后即可参与回复。登录