前提是你修不完
静态分析给你成千上万条权重相同的告警。dowse 只挑出既改动频繁又复杂的代码并排序。复杂但没人碰的代码不会被提出来——修它没有回报。
npx dowse analyze在一个有 git 历史的 TypeScript monorepo 中运行。你会得到 hotspot 排名、各包风险,以及隐藏耦合。无需任何配置。
⚠ Top hotspots (complexity=loc):
┌───┬────────────────────────────────┬───────┬────────┬────────┬─────────┐
│ # │ file │ score │ freq │ cx │ commits │
├───┼────────────────────────────────┼───────┼────────┼────────┼─────────┤
│ 1 │ services/api/src/runtime.ts │ 0.999 │ 100pct │ 100pct │ 255 │
│ 2 │ services/api/tests/db/…test.ts │ 0.997 │ 100pct │ 100pct │ 128 │
└───┴────────────────────────────────┴───────┴────────┴────────┴─────────┘
🔗 Hidden coupling — 没有依赖却总是一起改动的包 (1):
│ @acme/admin-web │ @acme/doctor-web │ 33% │ 91 │ hidden ⚠ │开创这一领域的是 CodeScene。dowse 保留了它的核心洞察——并非所有代码都等价——并瞄准通用工具在结构上薄弱的地方。
| CodeScene | dowse | |
|---|---|---|
| monorepo | 作为文件夹后期适配 | 包依赖图是一等公民 |
| 分数依据 | 公式与阈值不公开 | 完全公开,可手工复算 |
| 改动频率质量 | 承认重命名会夸大 | 用 AST 比对剔除虚假 churn |
| bus factor | 仓库级或文件级 | 按包计算 |
| 修复 | 只给建议 | 实际修改、验证、并实测改善幅度 |
| 语言支持 | 39 种 | 仅 TS/TSX——优势正来自于此 |
| 价格 | 收费,按活跃作者计 | MIT |
如果你的代码库跨越多种语言,CodeScene 更合适。dowse 用广度换取了在 TypeScript monorepo 上的精度。