驗證
在代理工作時抓出新的迴歸問題。
每當你儲存檔案或代理完成一項任務,Panolayer 都會依據程式碼庫實際的組成方式檢查這項變更。它會查看變更的函式、呼叫它們的程式碼,以及每一處的預期。你在數秒內就能看到哪裡壞了、原因為何,而且未經你的核准,代理無法將其工作合併到你的分支。
代理將 getUser() 改為回傳 null,而不是拋出例外。
它能編譯,getUser 的測試也仍然通過,但那六個未經檢查就讀取 user.name 的地方,要到預備環境才會發現問題。
Verification Engine 的運作方式
驗證從唯一不會對你的程式碼出錯的東西開始——程式碼本身。
它在從原始碼剖析而來的架構上執行,因此知道每個函式、誰呼叫它,以及它依賴什麼。Panolayer 能分辨新的迴歸與原本就存在的迴歸。有了持久記憶,你做的每一項修正都會留在專案中,因此你用得越多,驗證就越準確。
解析您的程式碼
推斷它預期的內容
檢查每一項變更
新的迴歸與舊的分開保留
01
從你的程式碼建立脈絡
代理只看得到被提供的檔案。Panolayer 會像編譯器一樣剖析你的儲存庫,包括檔案、模組、函式、類別、匯入,以及完整的呼叫圖。它知道 getUser() 從六個地方被呼叫,以及每一處的確切位置,因為它解析了符號,而不是由模型猜測。這就是你在架構中瀏覽的同一套架構。

02
推斷出程式碼的預期
有了 Panolayer 的持久記憶,規則會在每次執行之間保存下來,你也可以新增自己的規則,或修正它判斷錯誤的規則。

03
精確看出哪裡壞了
開啟一個失敗項目,你就能看到函式、規則、實際發生的情況、發生位置,以及受影響的呼叫端,並附上背後的證據。
在已完成設定的情況下,驗證還可以執行你的測試、建構和型別檢查,在瀏覽器中載入前端變更,並將螢幕截圖與參考圖片比較。

04
與基準比較
每項結果都會與變更前的程式碼庫比較,因此原本就存在的失敗會維持「既有」標籤,你只需追查這次變更弄壞的部分。
05
修正程式碼,或修正規則
如果程式碼有誤,你可以自行修正,或請 Panolayer Agent 以該失敗項目和受影響的呼叫端為脈絡進行修正。如果規則有誤,就修正規則。無論哪種方式,結果都會再次經過驗證。
未經你的核准,代理無法將自己的工作合併到你的分支。Marketplace 代理在容器中執行,沒有通往你主工作樹的路徑。你 Mac 上的 CLI 代理則透過指令加以約束。即使檢查失敗,你也隨時可以 commit,並合併代理的工作。
進一步了解建構常見問題
什麼是規則?
對一段程式碼應有行為的預期,例如「回傳 user 或拋出例外,絕不回傳 null」。Panolayer 會從你的程式碼推導出大部分規則,你也可以新增自己的規則。規則會持續保存,並在每次變更時執行。
我可以撰寫自己的規則嗎?
可以。除了 Panolayer 從你的程式碼推導出的規則之外,你也可以新增自己的規則。
規則有誤時會怎樣?
修正它。修正會保留下來,該儲存庫日後的驗證也會反映這項修正。
驗證有多快?
結果在數秒內回傳,讓你不必離開手上的任務,就能檢查、修正、再檢查。
驗證何時執行?
當你在分支上儲存檔案時,以及代理表示任務完成時。
我的程式碼會被傳送給模型嗎?
除非你進行同步或分享,否則你的儲存庫以及 Panolayer 為其建立的索引都會保留在你的 Mac 上。使用模型的功能會將相關的程式碼片段和提示傳送給你所設定的供應商,並受該供應商的條款約束。
在安全性頁面進一步了解它會阻擋我的合併嗎?
它約束的是代理,不是你。未經你的核准,代理無法將自己的工作合併到你的分支。你隨時都可以 commit 並合併。