跳到正文
发现
cli开发者工具

fallow:JS/TS 代码库分析工具

用 Rust 写的 TypeScript 和 JavaScript 代码库分析工具,从一张仓库图里找出复杂度热点、重复代码、架构违规和未使用代码。

admin
发布于 2026-10-31 · 更新于 2026-11-01
浏览
2
访问
0
下载
0
版本
v3.38.1
平台
Windows、macOS、Linux
该作品还没有经过官方审核。访问演示、下载或复制命令前,请自行确认来源可信。

详细介绍

项目简介

fallow 是面向 TypeScript 和 JavaScript 的代码库智能分析工具。它会为仓库构建一张图,包含模块、导出、依赖、函数和样式 token,再基于这张图分析复杂度、架构漂移、代码重复、未使用代码以及代码改动带来的风险。

它是一个单独的 Rust 二进制,静态分析不依赖 TypeScript 编译器,也不需要 Node.js 运行时;配合 100 多个内置框架插件,首次运行无需配置。

fallow 有四个入口,它们共用同一份配置文件和同一个分析引擎:

入口 启动方式
终端 npx fallow
Pull Request uses: fallow-rs/fallow@v3
编辑器 VS Code 扩展或 fallow-lsp
编码 Agent npx fallow agent install

主要功能

  • fallow audit:改动文件检查门禁,覆盖复杂度、重复、未使用代码与样式漂移,输出 pass、warn 或 fail。
  • fallow health:复杂度热点、0–100 健康分、重构目标,并结合 git churn 与代码所有权。
  • fallow architecture / fallow guard:架构边界违规(提供 bulletproof、layered、hexagonal、feature-sliced 预设)与循环依赖。
  • fallow dupes:在 JS、TS、CSS 以及 Vue、Svelte、Astro 组件中查找重复代码。
  • fallow health --css:发现 CSS 和 CSS-in-JS 中偏离设计系统的地方。
  • fallow dead-code / fallow fix:未使用的文件、导出、类型、类和枚举成员、依赖,带自动修复和 dry-run 预览。
  • fallow mutation:变异测试,检查源码中的小改动是否有测试能发现(可选,会运行项目测试)。
  • fallow security:按从入口点可达性排序的安全候选(可选)。
  • fallow similar-code:意图相同但写法不同的函数(可选,使用一次性下载的本地模型)。
  • fallow flags:扫描代码库中的 feature flag 模式。
  • npx fallow viz:打开交互式 HTML 项目地图,提供健康、重复、架构、未使用代码等视角。

其他特性:加上 --type-aware 可在别名、re-export 和包之间精确识别 TS 符号,减少接口和基类带来的误报;生产环境运行时覆盖率可作为可选项合并进 health 与 audit 报告;支持 npm、yarn、pnpm workspace,用 --workspace <name> 限定单个包;每条命令都有类型化 JSON 输出、文档化的退出码和公开的输出 schema,fallow schema 可打印所有命令、参数、输出格式与退出码;分析在本机或 CI runner 上运行,遥测为可选项。

安装与使用

在任意 JS 或 TS 项目根目录直接运行:

npx fallow

固定到项目中可安装为 dev 依赖:

npm install --save-dev fallow

常用命令:

npx fallow audit
npx fallow fix --dry-run
npx fallow health --score
npx fallow dead-code --trace src/api.ts:client

安装 pre-commit 钩子,在提交离开本机前做检查:

npx fallow hooks install --target git

GitHub Actions 中使用:

- uses: actions/checkout@v4
  with:
    fetch-depth: 0
- uses: fallow-rs/fallow@v3
  with:
    command: audit

接入已有代码库时,可以先运行 npx fallow recommend 检测技术栈并生成建议配置,它不会修改文件;随后在 PR 中只用 fallow audit,只拦截本次改动引入的问题。若要对完整运行保存基线,可用 npx fallow --save-baseline fallow-baseline.json,之后每次运行时加上 --baseline fallow-baseline.json。在 Action 中加 fail-on-issues: false 可以先进入只报告模式。

若要保留有意为之的导出,可以加抑制注释:

// fallow-ignore-next-line unused-export -- kept for plugin consumers
export const keepThis = 1;

// fallow-ignore-file <issue-type> 可抑制整个文件,JSDoc 标签 @public、@internal 可让有意的库 API 保持安静,npx fallow suppressions 列出项目中所有抑制项。

注意事项

  • 同样的输入会得到同样的输出,每个发现都有稳定指纹;分析器内部不含 AI,只有可选的 similar-code 使用固定的本地模型。
  • fallow audit 只在本次改动引入问题时失败,已有的历史问题不会让检查失败。
  • 在 PR 中,Action 会把分析范围限定到改动文件,因此输出可能与本地完整运行不同。
  • --type-aware、fallow mutation、fallow security、fallow similar-code 都是可选能力。
  • 若结果被缺失入口或生成文件干扰,可在配置中补充入口并排除生成文件。

本作品整理自 GitHub 开源项目 fallow-rs/fallow,原作者 @fallow-rs,许可证 MIT。中文介绍由 AI 根据项目 README 整理,以原仓库为准。

更新记录

  1. v3.38.1当前版本

    `fallow audit` 扫描临时目录中的旧缓存改为每小时最多一次,避免缓存堆积拖慢速度;清理缓存时一并删除 `.lock` 文件(Unix)并新增 orphaned-lock 原因;修复 VS Code 扩展未随 3.38.0 发布的问题,重新上架并打包 minimatch 11.0.3。

  2. v3.38.0

    `fallow health` 可报告过长文件:设置 `health.maxFileLines` 或 `--max-file-lines <N>`,默认 0 表示关闭;新增 `complexity-file-lines` 规则,SARIF 与 CodeClimate 使用 `fallow/long-file` 规则 id,并支持按文件覆盖阈值;MCP 工具、GitHub Action、GitLab 模板与 VS Code Health 视图同步支持。

评论