症狀:CodeQL Xcode 27 Swift 6.4 企業掃描在工具鏈升級後受阻,或工作流程成功卻沒有可用的分析結果。
最快解法:Swift 掃描先固定到 GitHub 指引支援的 macOS 26 或更早版本與 Xcode 26 或更早版本,暫緩 Swift 6.4;C/C++、C#、Java 可評估 build mode none,但必須驗證分析覆蓋度,不能把工作流程啟動成功當作掃描完成。GitHub 兼容性公告|編譯型語言建置模式說明
適合負責 GitHub Actions 與 CodeQL 工作流程、需要找出環境升級後掃描失效原因的 IT 或平台工程負責人。
也適合管理 Swift/iOS 專案掃描的安全工程師,以及規劃 Mac 建置資源、需要判斷工具鏈固定方式的技術負責人。
最後核對於 2026 年 10 月 24 日,依據 GitHub 在 2026 年 10 月 19 日發布的相容性公告及目前的 GitHub Docs。實際處置前,請再核對公告是否更新;不同語言與建置模式的限制不可混為一談。
Swift 6.4 掃描:為何要先固定工具鏈
GitHub 已確認 CodeQL 不支援分析 Swift 6.4。這是 CodeQL 與語言版本的相容性限制,不是換一台 Mac、重啟 Runner 或清除快取就能排除的單一節點故障。即使 Xcode 編譯及測試成功,也不能據此推定 CodeQL 已能完整擷取 Swift 程式碼並產生分析結果。GitHub 對 Swift 6.4 的公告
對仍需安全掃描的 Swift 工作負載,先把掃描工作流程固定在 GitHub 指引的 macOS 26 或更早版本,以及 Xcode 26 或更早版本;同時暫停將 Swift 版本升至 6.4。這個處置是把掃描移回公告建議的工具鏈範圍,不等於要求整個開發團隊永久停留在舊環境。你可以將建置與掃描拆成不同工作流程,避免為了測試新工具鏈而讓必要的安全檢查失去有效性。
編譯成功為何不代表安全分析成功?
編譯器驗證的是程式能否在目前工具鏈下建置;CodeQL 則需要擷取程式碼並建立資料庫,再執行分析。兩者的工作目標不同。當 Swift 版本已超出 CodeQL 支援範圍,流水線可能仍然完成其他步驟,但掃描結果未必代表程式碼已受到有效分析。
因此,復原時要分開記錄建置狀態、CodeQL 資料庫狀態、分析結果及結果上傳狀態。若只看工作流程的綠色狀態,可能會漏掉分析未執行、資料庫不完整,或結果沒有送達程式碼掃描服務等問題。
Xcode 27 的追蹤式擷取影響哪些工作負載?
GitHub 公告指出,安裝 Xcode 27 時,C/C++、C#、Go、Java、Kotlin 及 Swift 的追蹤式擷取不可用。這項限制針對依賴追蹤式擷取的工作負載;排查時要先確認 CodeQL 為該語言採用的建置模式,而不是只看專案使用哪一種程式語言。受影響語言與工具鏈說明
追蹤式建置會在實際建置過程中收集 CodeQL 需要的資訊。因此,單純改用一個能安裝 Xcode 27 的 Runner,並不能解決此模式的擷取問題。對仍依賴追蹤式建置的掃描,依 GitHub 建議先使用 macOS 26 或更早版本與 Xcode 26 或更早版本,再於該環境重新執行掃描並核對結果。
如何固定 macOS 與 Xcode 版本?
不要只在工作流程裡指定「最新版」Runner 或在主機上手動切換 Xcode,卻沒有記錄實際執行環境。先查每次工作流程的 Runner 映像與 Xcode 選擇結果,再將已驗證的映像、Xcode 版本及 CodeQL 設定一併納入變更控管。GitHub 的 Xcode 27 Runner 發布說明可協助你辨認 Runner 映像的版本資訊;但映像可用,不代表 CodeQL 的追蹤式擷取與該環境相容。Xcode 27 Runner 發布說明
實作時,應先在固定環境重新跑同一個工作負載,並與升級前可用的掃描資料庫及分析結果比對。若只切換了 Xcode,卻沒有確認 Runner 的 macOS 版本及實際選取的開發工具目錄,就無法判斷問題究竟來自作業系統、Xcode,還是建置模式。
macOS 27 Runner:分開判斷作業系統與 Xcode
macOS 27 與 Xcode 27 是相關、但不同的相容性邊界。GitHub 表示在 macOS 27 上,相關擷取可能不可用;這不等於所有使用 macOS 27 的專案都必然掃描失敗。你需要核對實際 Runner 映像、執行時選用的 Xcode,以及 CodeQL 建置模式,再判斷該工作負載是否落在受影響範圍。GitHub 相容性公告
建議把環境驗證拆成可重複執行的比對:先使用固定的 macOS 與 Xcode 組合執行掃描,再對照目前環境的資料庫內容、分析告警及上傳結果。若只改變 Runner 作業系統,卻同時更換 Xcode、相依套件或掃描設定,結果出現差異時就難以定位原因。保留可回退的固定環境,能讓團隊在新工具鏈尚未通過掃描驗收時,仍維持原有安全檢查。
build mode none:只在列明語言逐庫評估
對 C/C++、C# 與 Java,GitHub 列出可考慮 build mode none。這種模式不追蹤實際建置,因此在特定建置追蹤受阻時可能值得測試;但不能假定它與追蹤式擷取產生等價的資料庫,也不能將此選項直接套用到公告未列出的語言。GitHub 編譯型語言建置模式文件
評估時,先選擇具有代表性的倉庫與工作負載,確認資料庫是否包含預期程式碼,再檢查生成程式碼、相依資訊及分析結果。若專案依賴建置期間產生的檔案,或需要特定建置參數才能辨認完整程式碼範圍,省略建置追蹤可能改變分析覆蓋度。GitHub 也有針對生成程式碼告警的說明,可用來判讀生成內容與告警範圍,而不是只憑告警數量判斷掃描品質。生成程式碼告警說明
Intel Mac 掃描節點:另立遷移工作項目
GitHub 已表示 Intel Mac 的 CodeQL 支援預計於 2026 年 12 月中旬棄用。這是獨立於 Xcode 27 追蹤式擷取與 Swift 6.4 不支援之外的規劃事項,不應把遷移 Intel Mac 說成修復 Xcode 27 掃描問題的方法。Intel Mac 支援時程與相容性公告
請盤點仍由 Intel Mac 承載的 CodeQL 工作、目前使用的工具鏈,以及負責驗證與遷移的團隊。對每個工作負載,記錄能否移至已核驗的支援環境、需要哪些依賴條件,以及如何回退。由於公告提供的是棄用規劃而非你所屬組織的遷移期限,仍應依 GitHub 後續更新重新確認支援狀態。
變更後的驗收:逐項確認資料庫、分析與上傳
以下檢查清單適合在修改 Runner、Xcode 或 CodeQL 建置模式後使用。請保存執行紀錄與結果連結,讓安全與平台團隊能追查問題,而不是只保留工作流程是否通過的狀態。
- [ ] 確認工作負載:記錄倉庫語言,以及 CodeQL 使用追蹤式建置或
build mode none。 - [ ] 核對實際環境:從執行紀錄確認 Runner 映像、macOS 版本與實際選用的 Xcode,而非只檢查工作流程檔案中的預設值。
- [ ] 固定支援組合:Swift 掃描先依 GitHub 指引使用 macOS 26 或更早版本與 Xcode 26 或更早版本,並暫緩 Swift 6.4。
- [ ] 檢查資料庫:確認資料庫建立成功,並抽查預期的原始碼與必要生成內容是否納入。
- [ ] 檢查分析輸出:確認 CodeQL 分析步驟已執行,並檢視告警及錯誤,而非把建置成功視為掃描成功。
- [ ] 核對結果上傳:如果工作流程使用 SARIF,確認檔案產生、上傳步驟及掃描服務中的結果彼此對應;GitHub 的 SARIF 上傳文件列出其整合要求。SARIF 檔案上傳說明
- [ ] 留下回退證據:保存變更前後的工具鏈設定、資料庫檢查結果與分析紀錄,並讓維護者知道如何恢復至已核驗環境。
| 掃描工作負載 | 優先處置 | 驗收重點 |
|---|---|---|
| Swift,包含 Swift 6.4 專案 | 暫緩 Swift 6.4;按 GitHub 指引固定至 macOS 26 或更早版本及 Xcode 26 或更早版本 | 資料庫建立、分析結果及 SARIF 上傳均須分別核對 |
| C/C++、C#、Go、Java、Kotlin,使用追蹤式擷取 | Xcode 27 環境中先不要假設追蹤擷取可用;回到已核驗的工具鏈測試 | 確認實際建置模式與資料庫涵蓋內容 |
C/C++、C#、Java,考慮 build mode none |
逐個工作負載評估,不視為追蹤式建置的通用替代 | 檢查生成程式碼、相依資訊及分析結果 |
| macOS 27 Runner | 先確認 Xcode 選擇及 CodeQL 模式,再以固定環境對照 | 不將「可能不可用」擴大解讀為所有專案必然失敗 |
| Intel Mac 承載的掃描 | 建立獨立的節點盤點與遷移工作項目 | 追蹤 GitHub 支援狀態,勿與 Xcode 27 的修復混為一談 |
| 選項 | 適合情況 | 主要限制與決策條件 |
|---|---|---|
| 固定 macOS、Xcode 工具鏈 | Swift 掃描或仍依賴追蹤式建置的工作負載 | 保留舊環境的維護與部署安排;只有在掃描結果重新驗收後才放行升級 |
評估 build mode none |
GitHub 列出的 C/C++、C#、Java 工作負載 | 不追蹤實際建置;若資料庫或分析覆蓋不符合專案要求,就回退追蹤式模式並改用支援的工具鏈 |
| 暫用 Intel Mac | 尚未完成節點遷移、仍需處理既有工作負載 | Intel Mac 支援預計於 2026 年 12 月中旬棄用,應另行安排遷移與複核 |
| 自有或遠端 Mac | 已確認掃描確實需要 Mac,且目前承載方式無法滿足工具鏈與管理要求 | 需按實際環境驗證 CodeQL、macOS、Xcode 組合;本篇沒有可核實的 KVMFLUX 專屬配置、價格或實測資料,不能據此推定相容性 |
若你目前以自有 Mac 固定承載掃描,需自行負擔設備折舊、閒置容量與維護工作;若改用非 Mac 執行環境,則不能取代明確依賴 macOS/Xcode 的掃描工作。只有在確認工作負載必須由 Mac 承載、又不想為短期或變動需求直接添購設備時,才值得把遠端 Mac 租用納入比較。KVMFLUX 提供遠端真實 Mac 的週、月或季租用方式,並可透過 VNC、SSH 或網頁控制台連線;但你仍須先驗證實際 CodeQL 與工具鏈組合,不能只因可連線就視為掃描相容。可先查看Mac 使用情境、租用方案與週期,並在採購評估時核對資料與隱私條款。