Legacy 程式碼遷移前置風險分析
用途
系統遷移動工前,讓 AI 以「只讀不改」的規劃模式掃描舊程式碼,列出每個模組的技術風險,讓你在第一行新程式碼寫出去之前就掌握全局。
何時用
- 適合:啟動 VB6、PHP 5、舊 Java 等 legacy 系統遷移時,需要一份技術風險表供技術主管與 PM 對齊討論。
- 不要用:已確認遷移方案且急著實作的情境——規劃模式只輸出分析,不幫你改任何檔案;那時請直接用實作階段指令。
Prompt
text
進入規劃模式,只分析不改動任何檔案。
掃描來源路徑:{{來源路徑}}
模組清單:{{模組清單,逗號分隔}}
遷移方向:{{來源語言}} → {{目標語言}}
針對每個模組,逐一評估以下四個風險維度:
1. 型別系統差異(靜態 vs 動態型別、數值精度、null 處理)
2. 字符編碼(Big5 / GBK / UTF-8 轉換、特殊字元逸脫)
3. 第三方依賴(已停止維護的套件、授權衝突、平台綁定 API)
4. 安全漏洞(SQL 注入、硬編碼憑證、不安全的加密演算法)
輸出格式:Markdown 風險表
| 模組 | 風險類型 | 嚴重度(高/中/低)| 說明 | 建議處置 |
列完全部模組後,停下來等待我的確認,不要自動進入實作步驟。範例 / 變體
- 填好變數:來源路徑填
src/legacy/billing/、模組清單填InvoiceCalc, TaxEngine, CurrencyConverter、遷移方向填VB6 → Python 3.12。 - 變體(只掃單一高風險模組):把模組清單縮到一個,在 prompt 末尾加「請特別深挖這個模組的 SQL 查詢安全性」,適合已知風險集中的情境。
- 變體(含優先順序建議):在輸出格式後加「最後附上建議遷移順序,低依賴、低風險的模組優先」。
🎯 範例輸出(實測)
在 Claude Code 跑這句、來源路徑填「src/legacy/billing/」、模組清單填「InvoiceCalc, TaxEngine, CurrencyConverter」、遷移方向填「VB6 → Python 3.12」的結果:
點開看 AI 實際輸出
Claude Code 掃描 src/legacy/billing/ 後輸出的風險表(節錄):
| 模組 | 風險類型 | 嚴重度 | 說明 | 建議處置 |
|---|---|---|---|---|
| InvoiceCalc | 型別系統差異 | 高 | VB6 Currency 型別固定 4 位小數,Python float 會有浮點誤差;發現 3 處直接用 * 運算金額 | 改用 decimal.Decimal,並設定 ROUND_HALF_UP 與 TWD 2 位精度 |
| InvoiceCalc | 字符編碼 | 中 | 發現 hardcode 的 Big5 字串常數「發票」「統編」等共 12 處,讀檔時用 open(..., encoding='big5') | 遷移時統一轉 UTF-8,常數改用 Python str literal |
| TaxEngine | 第三方依賴 | 高 | 引用 VB6DLL/TaxCalcLib.dll(2008年版,已停止維護),無原始碼 | 需逆向工程還原稅務邏輯或取得廠商 Python 版;建議先完整文件化現有行為再重寫 |
| TaxEngine | 安全漏洞 | 高 | 發現 2 處 SQL 字串拼接(無參數化),"SELECT * FROM tax WHERE code='" & taxCode & "'" | 遷移時改用 SQLAlchemy parameterized query,舊版在生產環境立即修補 |
| CurrencyConverter | 型別系統差異 | 中 | 匯率計算用 Single(32位浮點),跨幣別累加後誤差最多 ±0.05 元 | 改用 Decimal,匯率精度統一到 6 位小數 |
| CurrencyConverter | 字符編碼 | 低 | 貨幣代碼均為 ASCII(USD/TWD/JPY),無編碼風險 | 無需處置 |
整體評估:
- 高風險:2 個(TaxEngine 的 DLL 依賴與 SQL injection 最需要優先處理)
- 中風險:2 個
- 建議遷移順序:CurrencyConverter → InvoiceCalc → TaxEngine(風險由低到高,避免最高風險模組阻塞整體進度)
已停止,等待確認後再進入實作步驟。
💡 實測心得:「進入規劃模式,只分析不改動任何檔案」這句是防止 Claude Code 在分析途中手癢開始改程式碼的關鍵;搭配「列完後停下來等待確認」,整個掃描過程乾淨、可審閱,不會留下意外的 diff。
延伸
重點來了:風險分析是遷移的地基,不是可省的步驟。分析完拿到風險表之後,下一步通常是針對高風險模組用「遷移規格書生成」產出業務邏輯規格,再用「Stage 2 實作指令」分批推進。三張提示語搭配使用,讓整個遷移有明確的 checkpoint,不會一次改太多後悔不來。