【美國加州門洛帕克訊】程式設計助手已經很擅長寫出看起來正確的程式碼。對需要合併程式碼的開發者來說,更難回答的問題是:有沒有人檢查過?Corepass 的程式設計 AI 代理 Remy 給出的答案相當於一條證據鏈:記錄它運行了哪些檢查、某項檢查失敗後改了什麼,並明確說明哪些內容沒有驗證。
Remy 產品頁所描述的這套做法遵循固定的順序。改完程式碼後,Remy 執行相關的測試、型別檢查或建構。如果有檢查沒通過,它會查詢原因、進行修復,然後重跑同一項檢查,而不是換一項更容易通過的。產品頁對最後一步說得很直白:「然後告訴你跑了什麼、結果如何,以及哪些沒有驗證。」
- 執行檢查測試、型別檢查或建構
- 查詢原因當某項檢查失敗時
- 修復並重跑再次運行同一項檢查
- 彙報結果跑了什麼、結果如何、哪些沒有驗證
失敗的那項檢查,就是重跑的那項
為什麼必須是同一項檢查
堅持重跑完全相同的檢查,正是關鍵所在。修復之後如果換一項測試,或者乾脆不測,就無法確定原來的失敗是否已經消除。重跑失敗的那項檢查,能把修復和證明它有效的證據聯絡起來,並把證據放在審閱者看得到的地方。
「然後告訴你跑了什麼、結果如何,以及哪些沒有驗證。」
說明沒有檢查到的內容
報告的最後一部分,在程式設計工具中可能最為少見。Remy 的總結會把已驗證和未驗證的內容分開;在產品自己的演示中,一個任務以兩份清單收尾,一份標題是「已驗證」,另一份是「未驗證」。比如,一處沒有任何測試覆蓋的程式碼改動,會被明確列為未驗證,而不是一筆帶過。
合併之前的審查
驗證只是其中一層。Remy 的文件還介紹了一種獨立的程式碼審查模式,按嚴重程度報告發現的問題,每一條都附有位置、影響和依據。在產品頁展示的工作流中,PR 提交之前,審查機器人 Bugbot 會讀取差異,查詢測試遺漏的問題。
Corepass 把「讓工作可審閱」列為其產品原則之一,而驗證報告是這一原則在產品中最清晰的體現:AI 代理負責檢查,開發者則獲得決定是否合併所需的記錄。