プロジェクト概要

属性詳細
名称fallow
GitHubfallow-rs/fallow
Stars392 ⭐
言語Rust
ライセンスMIT
ポジションTypeScript/JavaScript コード品質解析ツール

なぜ fallow が必要か?

フロントエンドプロジェクトはビジネスの発展とともに、コードベースに様々な「技術的負債」が蓄積しがちです:

  • ゾンビコード:定義された関数や変数が未使用のまま、ファイルが肥大化
  • コピペ:同じロジックが数十のファイルに散在し、修正時に漏れが発生
  • 循環依存:モジュール A が B に依存し、B も A に依存する構造
  • 複雑度爆発:単一関数が数百行に及び、担当者が手を付けられない

従来の ESLint は構文問題を発見できますが、このような「アーキテクチャレベル」の問題には対応できません。fallow の目的はこの空白を埋めることです。

主要機能

1. 未使用コード検出

プロジェクト全体のエクスポートと参照関係をスキャンし、「存在するが使用されていない」コードを特定します:

fallow --unused

出力例:

⚠️  Unused exports found:
   - src/utils/helpers.ts: formatDate()
   - src/components/LegacyButton.tsx (entire file)
   - src/api/types.ts: UserResponse interface

2. 重複コードの識別

単なる文字列比較ではなく、fallow はコードの意味構造を分析し、「変数名を変更しただけのコピペ」を発見します:

fallow --duplicates

3. 循環依存の検出

モジュール間の依存関係を可視化し、循環参照の発生源を特定します:

fallow --circular

4. 複雑度ホットスポット分析

循環複雑度と認知的複雑度に基づき、リファクタリングが最も必要な関数を特定します:

fallow --complexity

なぜ Rust を選んだのか?

fallow は Rust で書かれており、同類の JavaScript ツールと比較して明らかなパフォーマンスアドバンテージがあります:

シナリオfallow (Rust)従来の JS ツール
10万行コードのプロジェクト~2秒~15秒
100万行コードのプロジェクト~20秒数分またはメモリ不足
メモリ使用量~100MB~500MB+

大規模な monorepo において、このパフォーマンス差はツールの可用性を左右します。

使用方法

インストール

# npm でインストール(プリコンパイルバイナリ)
npm install -g fallow

# または cargo でソースからコンパイル
cargo install fallow

基本的な使い方

# プロジェクト全体をスキャン
fallow

# 特定のディレクトリのみチェック
fallow src/components

# JSON 形式で出力(CI 用)
fallow --format json > report.json

# テストファイルを無視
fallow --ignore "**/*.test.ts"

CI 連携

GitHub Actions で使用する例:

- name: Check code quality
  run: |
    npx fallow --unused --fail-on-found

プロジェクト状況

指標データ
Stars392
Forks10
作成日2026年3月
最終更新2026年4月(活発に開発中)
主要依存OXC(Rust 製 JavaScript コンパイラ)

同類ツールとの比較

ツール言語未使用コード重複コード循環依存パフォーマンス
fallowRust極めて高い
KnipTypeScript中程度
jscpdJavaScript中程度
MadgeJavaScript遅い

fallow の優位性は、すべてのコード品質問題を「ワンストップ」で解決し、かつ大規模プロジェクトを処理するのに十分なパフォーマンスを持つことです。

注意事項

  • プロジェクトは新しい(2026年3月作成)ため、API が変更される可能性があります
  • 一部機能は開発中(Vue/Svelte 単一ファイルコンポーネントのサポートなど)
  • Node.js 18+ の実行環境が必要

まとめ

長期的にメンテナンスしている TypeScript プロジェクトがある場合、または新しいプロジェクトでコード品質の基準を設けたい場合、fallow は試す価値があります。Rust コアは同類ツールでは難しいパフォーマンスを提供し、機能カバレッジもほとんどのコードクリーンアップシナリオに対応しています。


関連リンク