共用方式為


針對程式代碼掃描進行疑難解答

一般而言,如果您在 CodeQL 執行時遇到錯誤,CodeQL CLI 會報告其執行的每個命令狀態做為結束代碼。 結束代碼會提供後續命令或依賴 CodeQL CLI 之其他工具的資訊。 如需結束代碼詳細數據的詳細資訊,請參閱 結束代碼

錯誤:'database finalize' CodeQL 命令 (32)

此錯誤表示完成 CodeQL 資料庫建立時發生問題,可能是因為擷取錯誤或缺少建置步驟。

疑難排解步驟:

  1. 確認程序代碼存在且已編譯
    • 針對已編譯的語言,請確認建置程式正在編譯程序代碼,並在和工作AdvancedSecurity-Codeql-Analyze之間AdvancedSecurity-Codeql-Init發生。 您可以在指定組建命令中找到常見的建置命令和必要旗標(例如乾淨的無快取/無精靈)。
    • 針對解譯的語言,請確認專案中指定語言有一些原始程式碼。
  2. 檢查擷取錯誤
    • 確認擷取錯誤是否會影響CodeQL資料庫的健全狀況。
    • 檢閱記錄檔中是否有擷取錯誤和警告,以評估整體資料庫健康情況。
  3. 調查壓倒性錯誤
    • 如果大部分檔案遇到擷取器錯誤,請進一步調查以瞭解擷取不當的根本原因。

錯誤:自動建置文稿 (1)

此錯誤描述自動建置失敗,並建議程式代碼掃描設定或設定的問題。

疑難排解步驟:

  • 設定建置步驟
    • 拿掉 AutoBuild 步驟,並改為在管線中設定已編譯語言的特定建置步驟。
    • 請參閱設定 Azure DevOps 的 GitHub 進階安全性中提供的設定指導方針。

錯誤:代理程式工具快取中找不到 CodeQL 目錄

此錯誤表示為自我裝載代理程式安裝CodeQL時發生問題。

疑難排解步驟:

錯誤:未設定語言管線變數

嘗試執行 CodeQL 但未設定管線變數來指定要掃描哪些語言時,就會發生此錯誤。

疑難排解步驟:

  • 設定語言管線變數
    • 請確定已正確設定語言管線變數。 請參閱設定 Azure DevOps 的 GitHub 進階安全性中提供的設定指導方針。
    • 支援的語言包括csharp、、cppgojavajavascript、、pythonruby、 和 swift

CodeQL 不會傳回任何結果

本節提供 CodeQL 分析不會產生任何結果的情況指引。

疑難排解步驟:

  1. 檢查偵測到的弱點
    • 請考慮您的程式代碼可能確實沒有弱點的可能性。 如果預期但未偵測到弱點,請繼續進行進一步驗證。
  2. 檢閱查詢套件組態
  3. 調整檢視結果的許可權
    • 請確定至少在參與者層級授與適當的許可權,才能存取分析結果。 如需詳細資訊,請參閱 進階安全性許可權

CodeQL 逾時

如果工作 AdvancedSecurity-Codeql-Analyze@1 正在顯示 This job was abandoned ... we lost contact with the agent ,而且您使用的是託管Microsoft代理程式,則工作會達到付費託管代理程式的內建六小時逾時。 您可以改為嘗試在自我裝載的代理程式上執行分析。

程式代碼掃描工作許可權

程式代碼掃描建置工作會使用管線身分識別來呼叫進階安全性 REST API。 根據預設,相同專案中的管線可以存取執行 CodeQL 分析所產生的 SARIF 檔案。 如果這些許可權已從組建服務帳戶中移除,或者如果您有自定義設定(例如,裝載在與存放庫不同的專案中的管線),則必須手動授與這些許可權。

疑難排解步驟:

  • Advanced Security: View alerts 與和 Advanced Security: Manage and dismiss alerts 許可權給管線中使用的建置服務帳戶,其中專案範圍的管線為 [Project Name] Build Service ([Organization Name]),而集合範圍的管線為 Project Collection Build Service ([Organization Name])

將 CodeQL 套件組合手動安裝到自我裝載的代理程式

使用 GitHub提供的架構設定文稿,將 CodeQL 套件組合安裝到代理程式工具快取。 這些文稿需要$AGENT_TOOLSDIRECTORY將環境變數設定為代理程式上代理程式工具目錄的位置,例如 。 C:/agent/_work/_tool 或者,您可以手動實作下列步驟:

  1. GitHub 挑選最新的 CodeQL 版本套件組合。
  2. 將套件組合下載並解壓縮到代理程式工具目錄內的下列目錄,通常位於 底下 _work/_tool./CodeQL/0.0.0-[codeql-release-bundle-tag]/x64/。 使用的目前版本 v2.16.0,資料夾名稱會標題為 ./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64/。 深入瞭解 代理程式工具目錄
  3. 建立標題在 x64.complete ./CodeQL/0.0.0-[codeql-release-bundle-tag] 資料夾內的空白檔案。 使用上述範例,檔案 x64.complete 的結束檔案路徑應該是 ./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64.complete