全部は直せない、を前提にする
静的解析は何千件もの警告を等価に並べます。dowse は「頻繁に変更される × 複雑」なコードだけを hotspot として抽出し、優先順位を付けます。複雑でも誰も触らないコードは提案しません。
npx dowse analyzegit 履歴のある TypeScript モノレポで実行すると、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 が構造的に弱い領域を狙っています。
| CodeScene | dowse | |
|---|---|---|
| モノレポ | フォルダの集まりとして後付け対応 | パッケージグラフが第一級 |
| スコアの根拠 | 式・閾値が非公開 | 全公開・手で再計算できる |
| 変更頻度の質 | 型リネームで誇張されると自認 | AST 比較で偽 churn を除外 |
| bus factor | リポジトリ / ファイル単位 | パッケージ単位 |
| 修正 | 提案まで | 直して検証し、改善幅を実測 |
| 対象言語 | 39 言語 | TS/TSX のみ(これが強みの源泉) |
| 価格 | 有料(per-active-author) | MIT |
多言語対応が必要なら CodeScene のほうが適しています。dowse は TypeScript モノレポに全振りすることで精度を取っています。