fallow:面向 TypeScript 和 JavaScript 的程式碼庫智慧分析
TypeScript 和 JavaScript 的程式碼庫智能。免費靜態分析程式碼與風格:未使用的程式碼、重複、循環依賴、複雜性熱點、架構邊界、設計系統漂移。可選的付費運行時層(Fallow Runtime):來自實際生產流量的熱路徑審查和冷路徑刪除證據。
秒懂
- 它是什麼?
- 一個以 Rust 編寫的二進位檔,可對 TypeScript 和 JavaScript 程式碼庫進行靜態分析,偵測未使用程式碼、重複、循環依賴、複雜度熱點、架構邊界違規和設計系統漂移。
- 適合誰用?
- fallow audit 適合需要直接處理 --format json 的讀者,未必適合只想要抽象結論的人。採用前應先依 README 在隔離環境執行 .fallowrc.json,檢查 Fallow Runtime 產出的實際結果,再決定是否符合現有流程;README 沒有說明的部分,應列為待確認事項。
- 可以商用嗎?
- 可以。MIT 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
- 還在維護嗎?
- 有在維護。儲存庫最近一次提交在 1 天前。
- 用什麼語言寫的?
- 主要是 Rust(依據 GitHub 的語言統計)。
以上回答依據專案的 GitHub 資料(最近同步於 2026年9月14日)與我們的分析,不構成法律意見。
開源專案深度解析
該倉庫建構了什麼
fallow-rs/fallow 倉庫託管 fallow,一個用 Rust 編寫的程式碼庫智慧工具,面向 TypeScript 和 JavaScript。其核心是一個靜態分析器,讀取整個程式碼庫作為一個依賴圖,從匯入邊到樣式令牌,並報告圖中顯示的內容:未使用的程式碼、循環依賴、重複、複雜度熱點、架構邊界違規和設計系統樣式漂移。分析器是確定性的,使用型別化輸出契約,且內部沒有 AI。靜態分析不需要 TypeScript 編譯器或 Node.js 執行階段。可選的付費層 Fallow Runtime 將生產執行證據合併到同一報告中。
在 fallow audit 的脈絡裡,這個判斷要連同 --format json 一起閱讀。README 提到的 fallow audit 是可追溯的專案記號,讀者可以把它對照原始檔案與實際輸出,分辨文件描述、工具行為和自己的使用情境。這也說明本節的限制:沒有寫在 README 裡的整合方式、效能數字或相容性,不應從名稱推測。 p align="center" picture source media=" prefers-color-scheme: dark " 。
靜態分析能發現什麼
fallow 報告未使用的檔案、匯出、型別、列舉和類別成員以及依賴項;循環依賴和重新匯出循環歸入其 dead-code 命令。重複偵測覆蓋 JS/TS 和 CSS 系列樣式表以及 Vue/Svelte/Astro 元件區域。複雜度熱點附帶 0 到 100 的健康評分和字母等級。架構邊界違規可透過 bulletproof、layered、hexagonal 和 feature-sliced 預設偵測。設計系統樣式漂移適用於 CSS 和 CSS-in-JS。還有變更檔案 PR 門禁、帶 dry-run 預覽的自動修復,以及可選的基於檢查器的 TypeScript 證據,用於精確符號使用和跨檔案私有型別洩漏等問題。
在 fallow audit 的脈絡裡,這個判斷要連同 .fallowrc.json 一起閱讀。README 提到的 --format json 是可追溯的專案記號,讀者可以把它對照原始檔案與實際輸出,分辨文件描述、工具行為和自己的使用情境。這也說明本節的限制:沒有寫在 README 裡的整合方式、效能數字或相容性,不應從名稱推測。nter" picture source media=" prefers-color-scheme: dark " srcset="http。
首次執行和設定
首次執行中的發現通常意味著 fallow 缺少入口點或框架約定,或者正在分析產生的檔案。超過 100 個內建框架外掛會自動偵測入口點和框架消費的匯出,因此第一次執行不需要設定。當產生的檔案需要提示時,使用者可以新增 ignorePatterns 設定。fallow recommend 命令偵測技術堆疊,列印建議的設定作為安全起點,並以 fallow 不會決定的少數主觀選擇結束。該命令是唯讀的,始終退出 0;在儲存設定之前不會更改任何內容。設定優先權為每個目錄首選匹配:.fallowrc.json 優先於 .fallowrc.jsonc、fallow.toml 和 .fallow.toml。
在 fallow audit 的脈絡裡,這個判斷要連同 Fallow Runtime 一起閱讀。README 提到的 .fallowrc.json 是可追溯的專案記號,讀者可以把它對照原始檔案與實際輸出,分辨文件描述、工具行為和自己的使用情境。這也說明本節的限制:沒有寫在 README 裡的整合方式、效能數字或相容性,不應從名稱推測。e source media=" prefers-color-scheme: dark " srcset="https://raw.gith。
CLI 命令和機器輸出
fallow CLI 提供專門命令:fallow 執行完整管道,fallow audit 作為變更檔案門禁,fallow dead-code 偵測未使用程式碼和循環依賴,fallow dupes 偵測重複,fallow health 偵測複雜度,fallow fix 套用自動修復,fallow security 提供可選的候選清單。對於機器消費,任何命令都可以使用 --format json --quiet,將緊湊的型別化 JSON 文件輸出到 stdout。退出代碼 0 和 1 都表示執行成功,1 表示有發現;退出代碼 2 表示真實錯誤,仍會向 stdout 寫入 JSON 錯誤信封。型別化契約隨 npm 套件一起提供,包括 CheckOutput 和 FallowJsonOutput 型別。
在 fallow audit 的脈絡裡,這個判斷要連同 fallow audit 一起閱讀。README 提到的 Fallow Runtime 是可追溯的專案記號,讀者可以把它對照原始檔案與實際輸出,分辨文件描述、工具行為和自己的使用情境。這也說明本節的限制:沒有寫在 README 裡的整合方式、效能數字或相容性,不應從名稱推測。ia=" prefers-color-scheme: dark " srcset="https://raw.githubuserconten。
面向代理的介面
README 將 JSON 契約和退出代碼描述為代理介面。MCP 伺服器涵蓋分析、審計、健康、重複、追蹤、修復預覽和套用、邊界守衛檢查以及目標檢查;每個工具都記錄其最近的 CLI 後備方案。npm 套件附帶版本匹配的代理技能,位於 node_modules/fallow/skills/fallow 下。fallow init --agents 產生 AGENTS.md,其中包含任務到命令的矩陣。fallow hooks install --target agent 在 git commit 和 git push 上門禁 fallow audit。文件指出,代理迴圈中不應執行 fallow watch,因為它不會退出。遙測預設關閉,且為選擇加入,遵循 DO_NOT_TRACK。
在 fallow audit 的脈絡裡,這個判斷要連同 --format json 一起閱讀。README 提到的 fallow audit 是可追溯的專案記號,讀者可以把它對照原始檔案與實際輸出,分辨文件描述、工具行為和自己的使用情境。這也說明本節的限制:沒有寫在 README 裡的整合方式、效能數字或相容性,不應從名稱推測。-color-scheme: dark " srcset="https://raw.githubusercontent.com/fallow。
CI 整合
GitHub Actions 和 GitLab 都受支援。對於 GitHub Actions,README 顯示了使用 fallow-rs/fallow@v3 的範例,並指出 Action 引用和 CLI 版本相互獨立。CLI 版本解析順序為:version 輸入,然後是專案 package.json 中的 fallow 依賴規範,最後是 latest。當設定啟用 type-aware 分析時,Action 會自動安裝匹配版本的 fallow-type-aware 側車。預設情況下,Action 是阻塞性門禁,fail-on-issues 預設為 true。GitLab 使用者可以透過遠端包含使用範本,或使用 npx fallow ci-template gitlab --vendor 進行離線 vendor。
在 fallow audit 的脈絡裡,這個判斷要連同 .fallowrc.json 一起閱讀。README 提到的 --format json 是可追溯的專案記號,讀者可以把它對照原始檔案與實際輸出,分辨文件描述、工具行為和自己的使用情境。這也說明本節的限制:沒有寫在 README 裡的整合方式、效能數字或相容性,不應從名稱推測。e: dark " srcset="https://raw.githubusercontent.com/fallow-rs/fallow/m。
效能和授權
README 報告了死代碼基準集上的效能測量:在 Apple M5 上,fallow 2.100.0 分析 fastify 用時 64ms,而 knip 6 用時 205ms;分析 preact 用時 74ms,而 knip 用時 2.01s。它同樣指出 knip 在 astro 和 TypeScript 上更快,jscpd 在原始重複掃描上更快,並且 knip 在三個專案上出錯。完整的表格和複現腳本位於 BENCHMARKS.md。該倉庫使用 MIT 授權,版權歸 Bart Waardenburg 所有。授權授予使用、複製、修改、合併、發布、分發、再授權和銷售軟體副本的權利,但軟體按「現狀」提供,不提供任何明示或暗示的保證。
在 fallow audit 的脈絡裡,這個判斷要連同 Fallow Runtime 一起閱讀。README 提到的 .fallowrc.json 是可追溯的專案記號,讀者可以把它對照原始檔案與實際輸出,分辨文件描述、工具行為和自己的使用情境。這也說明本節的限制:沒有寫在 README 裡的整合方式、效能數字或相容性,不應從名稱推測。cset="https://raw.githubusercontent.com/fallow-rs/fallow/main/assets/l。
編輯結論
fallow audit 適合需要直接處理 --format json 的讀者,未必適合只想要抽象結論的人。採用前應先依 README 在隔離環境執行 .fallowrc.json,檢查 Fallow Runtime 產出的實際結果,再決定是否符合現有流程;README 沒有說明的部分,應列為待確認事項。
社群筆記