繁體中文

程式碼審查

跨 ChatGPT 和 Codex 客戶端審查程式碼變更

在提交或推送程式碼前,使用 ChatGPT 或 Codex 檢查改動。

開始審查

在 App 中審查

開啟審查面板,瞭解發生了哪些變化、提供精確到行的回饋,並決定要暫存、還原、提交或推送哪些內容。

要讓 Codex 審查改動,請在輸入框中輸入 /review,然後選擇 Review against a base branch(與基線分支比較)Review uncommitted changes(審查未提交改動)。Codex 會按優先順序報告發現,但不會修改工作樹。

審查面板要求專案位於 Git 儲存庫中。如果專案尚未使用 Git,應用會提示你建立儲存庫。

選擇審查範圍

面板會顯示哪些改動

審查面板反映 Git 儲存庫的狀態,而不只是 Codex 編輯過的內容。它同時包含 Codex 的改動、你自己的改動,以及儲存庫中的其他未提交改動。

預設顯示 Unstaged(未暫存) 改動。你還可以選擇:

  • Staged(已暫存):Git index 中的改動。
  • Commit(提交):某個選定提交。
  • Branch(分支):當前分支與基線分支之間的差異。
  • Last turn(最近一輪):助手最近一個會話輪次產生的改動。

審查多個儲存庫

本機專案包含多個資料夾,並且它們屬於不同的 Git 儲存庫時,審查面板可以顯示每個儲存庫的改動。開啟審查標題欄中的儲存庫選擇器,即可檢查其他儲存庫並檢視新增或刪除的行,無需離開當前審查面板。

選擇 Last turn(最近一輪) 可以檢視助手最近一次對所有已附加儲存庫所做的改動。此時儲存庫選擇器會顯示 All repos(所有儲存庫)UnstagedStagedBranch 等其他審查範圍只應用於你選擇的儲存庫。

處理審查結果

程式碼審查結果

審查發現會以行內評論形式出現在審查面板中。

預設情況下,審查在當前聊天中執行。前往 Settings > General > Code review(設定 > 通用 > 程式碼審查),選擇 Detached(分離),可以改為啟動一個獨立審查聊天。參閱開發者設定

審查面板中顯示的行內程式碼審查評論

如果你讓 Codex 應用它發現的修復,正常的沙箱和審批設定仍會生效。

瀏覽審查面板

  • 單擊檔名通常會在你選擇的編輯器中開啟檔案。預設編輯器可在開發者設定中設定。
  • 單擊檔名所在的背景區域,可以展開或摺疊 diff。
  • 按住 Command 鍵並單擊某一行,可以在所選編輯器中開啟該行。
  • 如果某項改動符合預期,可以暫存它;不需要的改動可以還原

使用行內評論提供回饋

行內評論可以把回饋直接附加到 diff 中的具體行,通常是引導 Codex 修正問題最快的方式。

  1. 開啟審查面板。
  2. 將滑鼠懸停在要評論的行上。
  3. 選擇出現的 + 按鈕。
  4. 寫下回饋並提交。
  5. 完成所有評論後,向聊天傳送一條訊息。

由於評論精確到行,Codex 可以比面對籠統指令時更準確地響應。Codex 會把這些評論視為審查指導;留下評論後,再傳送一條明確說明意圖的後續訊息,例如:“Address the inline comments and keep the scope minimal.”

Pull request 審查

當 Codex 可以存取儲存庫的 GitHub,並且當前專案位於 pull request 分支上時,ChatGPT 桌面 App 可以直接協助處理 PR 回饋。側邊欄會顯示 PR 上下文和審查者回饋,審查面板會把評論與 diff 放在一起,因此你可以在同一聊天中讓 Codex 處理問題。

請安裝 GitHub CLI(gh),並使用 gh auth login 完成認證,以便 Codex 載入 PR 上下文、審查評論和變更檔案。如果沒有安裝 gh 或尚未認證,側邊欄和審查面板可能不會顯示 PR 詳情。

推薦流程:

  1. 在 PR 分支上開啟審查面板。
  2. 檢查 PR 上下文、評論和變更檔案。
  3. 讓 Codex 修復你明確選擇的評論。
  4. 在審查面板中檢查生成的 diff。
  5. 確認後暫存、提交改動,並推送到 PR 分支。

GitHub 觸發的審查請參閱在 GitHub 中使用 Codex

暫存和還原檔案

審查面板提供 Git 操作,幫助你在提交前整理 diff。可以在以下層級執行暫存、取消暫存或還原:

  • Entire diff(整個 diff):使用審查標題欄中的 Stage allRevert all 等按鈕。
  • Per file(按檔案):處理單個檔案。
  • Per hunk(按 hunk):處理單個變更塊。

使用暫存來接受部分工作;使用還原來丟棄不需要的改動。

已暫存與未暫存狀態

Git 允許同一個檔案同時包含已暫存和未暫存的改動,因此審查面板可能會在兩個檢視中同時顯示該檔案。這是正常的 Git 行為。