AI 將遺留 COBOL 程式遷移到 Java,連 bug 也一併保留
這項研究提出“Locksmith Loop”智慧體測試合成方法,用於確定性驗證 AI 將遺留 COBOL 程式遷移到 Java 的結果。該方法在普通硬體上執行經過 mock 計裝的 COBOL 與 Java 環境,透過迭代式見證搜尋和奇偶校驗變異深入程式分支。在 430 至 4,114 行的三個案例中,開源程式實現近乎完全分支覆蓋,生產級程式達到 91.90% 分支覆蓋,所有接受用例均透過確定性奇偶校驗。
將遺留 COBOL 程式遷移到 Java 一直是軟體工程中的棘手問題:業務邏輯往往執行數十年,缺少完整的測試資料,且難以覆蓋所有邊界情況。隨著 AI 輔助編碼的普及,模型可以快速生成 Java 程式碼,但如何證明遷移結果與原有 COBOL 程式行為一致,仍然缺乏系統性方案。近日一篇提交至 arXiv 的論文提出了一種名為“Locksmith Loop(鎖匠迴圈)”的智慧體測試合成方法,專門用於對 AI 生成的遺留程式碼遷移結果做確定性驗證。
該方法首先準備兩套執行時環境:將 COBOL 原始碼和生成的 Java 目的碼分別用 mock(模擬物件)進行插樁,並在大型機之外的普通商用硬體上執行。隨後,一個迭代式智慧體迴圈開始執行:Witness Search 階段在輸入 mock 空間中進行搜尋,以穿透程式中的更多分支;接著執行保持奇偶校驗一致的變異(parity-preserving mutations)。當程式到達路由邊界時,分析器會識別出一個“Locked Paragraph”——即阻礙更深入探索的條件。
研究團隊在三個 COBOL 到 Java 的案例上驗證了該方法,涵蓋兩個開源程式和一個內部生產級 COBOL 程式,源程式規模從 430 行到 4,114 行不等。結果表明,Locksmith 能持續超越單純輸入搜尋的覆蓋率平臺:兩個開源程式達到近乎完全的分支覆蓋,內部生產級程式達到 91.90% 的分支覆蓋率。在所有被接受的測試用例中,生成的 Java 程式碼均透過確定性奇偶校驗,與 COBOL 參考實現保持一致。
論文作者 Andras Ferenczi 及另外四位合作者認為,這是首次使用確定性 oracle 驗證智慧體編碼輸出的新穎方法。論文共 11 頁,包含 6 幅圖,於 2026 年 7 月 30 日提交,分類為軟體工程(cs.SE)與人工智慧(cs.AI)。這項研究提示,AI 遷移遺留系統不僅需要“會寫程式碼”,更需要“能驗證程式碼”的閉環——而這種驗證甚至可能保留原程式中的既有 bug,正如論文標題所暗示的那樣。