針對程式代碼掃描進行疑難解答
一般而言,如果您在 CodeQL 執行時遇到錯誤,CodeQL CLI 會報告其執行的每個命令狀態做為結束代碼。 結束代碼會提供後續命令或依賴 CodeQL CLI 之其他工具的資訊。 如需結束代碼詳細數據的詳細資訊,請參閱 結束代碼。
錯誤:'database finalize' CodeQL 命令 (32)
此錯誤表示完成 CodeQL 資料庫建立時發生問題,可能是因為擷取錯誤或缺少建置步驟。
疑難排解步驟:
- 確認程序代碼存在且已編譯
- 針對已編譯的語言,請確認建置程式正在編譯程序代碼,並在和工作
AdvancedSecurity-Codeql-Analyze
之間AdvancedSecurity-Codeql-Init
發生。 您可以在指定組建命令中找到常見的建置命令和必要旗標(例如乾淨的無快取/無精靈)。 - 針對解譯的語言,請確認專案中指定語言有一些原始程式碼。
- 針對已編譯的語言,請確認建置程式正在編譯程序代碼,並在和工作
- 檢查擷取錯誤
- 確認擷取錯誤是否會影響CodeQL資料庫的健全狀況。
- 檢閱記錄檔中是否有擷取錯誤和警告,以評估整體資料庫健康情況。
- 調查壓倒性錯誤
- 如果大部分檔案遇到擷取器錯誤,請進一步調查以瞭解擷取不當的根本原因。
錯誤:自動建置文稿 (1)
此錯誤描述自動建置失敗,並建議程式代碼掃描設定或設定的問題。
疑難排解步驟:
- 設定建置步驟
- 拿掉 AutoBuild 步驟,並改為在管線中設定已編譯語言的特定建置步驟。
- 請參閱設定 Azure DevOps 的 GitHub 進階安全性中提供的設定指導方針。
錯誤:代理程式工具快取中找不到 CodeQL 目錄
此錯誤表示為自我裝載代理程式安裝CodeQL時發生問題。
疑難排解步驟:
- 請參閱設定 Azure DevOps 的 GitHub 進階安全性中提供的設定指導方針或設定腳本。
錯誤:未設定語言管線變數
嘗試執行 CodeQL 但未設定管線變數來指定要掃描哪些語言時,就會發生此錯誤。
疑難排解步驟:
- 設定語言管線變數
- 請確定已正確設定語言管線變數。 請參閱設定 Azure DevOps 的 GitHub 進階安全性中提供的設定指導方針。
- 支援的語言包括
csharp
、、cpp
、go
java
javascript
、、python
、ruby
、 和swift
。
CodeQL 不會傳回任何結果
本節提供 CodeQL 分析不會產生任何結果的情況指引。
疑難排解步驟:
- 檢查偵測到的弱點
- 請考慮您的程式代碼可能確實沒有弱點的可能性。 如果預期但未偵測到弱點,請繼續進行進一步驗證。
- 檢閱查詢套件組態
- 確認正在使用的查詢套件,並視需要考慮切換至更完整的套件。
- 或者, 可以建立自定義查詢套件 以進行量身打造的分析。
- 調整檢視結果的許可權
- 請確定至少在參與者層級授與適當的許可權,才能存取分析結果。 如需詳細資訊,請參閱 進階安全性許可權。
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
或者,您可以手動實作下列步驟:
- 從 GitHub 挑選最新的 CodeQL 版本套件組合。
- 將套件組合下載並解壓縮到代理程式工具目錄內的下列目錄,通常位於 底下
_work/_tool
:./CodeQL/0.0.0-[codeql-release-bundle-tag]/x64/
。 使用的目前版本v2.16.0
,資料夾名稱會標題為./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64/
。 深入瞭解 代理程式工具目錄。 - 建立標題在
x64.complete
./CodeQL/0.0.0-[codeql-release-bundle-tag]
資料夾內的空白檔案。 使用上述範例,檔案x64.complete
的結束檔案路徑應該是./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64.complete
。