Skip to content
💻程式#117進階金字塔 · 做
工程師Claude CodeCodex#程式碼遷移#風險分析#規劃模式

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,不會一次改太多後悔不來。

依場景分類 · 一鍵複製 · 持續擴充