src/pipeline/pipeline.c(2,524 行)· registry.c(1,031 行)· pipeline.hpipeline.c 是把「一堆 source 檔」變成「一堆節點/邊」的總指揮。它管:pass 的註冊與執行順序、平行調度(pass_parallel.c 的 worker pool)、專案識別、以及最後把結果 publish 給 store。
new 初始化專案狀態(project name、cache、store 關聯);run 依序跑所有註冊的 pass;free 清理。set_before_publish_hook_for_tests 這類 for_test hook 是 CBM 的可測試性設計——很多函式有測試鉤子。
更新流程要求所有 process 取消時,執行中的索引透過此函式安全停止——不會留下半寫的圖。
registry.c 是 pass 的清單。pipeline 依 registry 的順序執行每個 pass,每個 pass 把節點/邊 publish 到 store。想看各 pass 細節見 passes.html。
大 repo 的索引速度靠平行 worker 撐起來(Linux kernel 3 分鐘的秘密之一)。CBM_WORKERS 可覆寫偵測到的 worker 數。