構建一個功能完整的 IDE 需解決編輯、分析、調試、構建等多維問題,核心在於代碼模型的構建與維護。
依賴詞法分析器將源碼切分為 Token,再由語法分析器生成 AST,最終映射顏色。需增量解析以支撐實時高亮。
基於語義分析的符號表,結合上下文類型推導,提供成員、參數、模板等提案。核心難點在於錯誤代碼下的容錯補全。
直接遍歷 AST 節點,提取類、方法、字段節點構建樹形結構,雙向同步編輯器游標位置。
對於動態語言或複雜泛型,需實現類似編譯器的類型系統,推導變量靜態類型,支撐重構與跳轉。
基於 JDWP (Java Debug Wire Protocol) 或語言對應協議,IDE 作為 Debugger 前端附加到遠程 JVM 進程,控制斷點、單步、變量檢查。
調試引擎與 UI 解耦,核心提供斷點管理、幀堆疊、變量評估等服務,GUI 僅負責渲染交互。
在斷點上下文中編譯並執行用戶輸入的代碼片段(如調用方法、新建對象),極大增強調試靈活性。編譯型語言需動態編譯器支撐。
標準化編譯器入口,IDE 可複用 javax.tools.JavaCompiler 進行語法檢查、AST 獲取、註解處理,避免重造輪子。Eclipse JDT 自研 ECJ,NetBeans 採用 javac API。
| 模塊 | 職責 | 源碼行數 |
|---|---|---|
| Code Analysis | 代碼模型、分析、生成 | 123,957 |
| IDE Core | 主程序與界面 | 62,940 |
| Visual Editor | 可視化設計器 | 30,760 |
| Text Editor | 文本編輯器核心 | 20,264 |
| Debugger | 調試器 | 9,238 |
| Language | 語言綁定 | 9,292 |

可見代碼分析模塊佔比近 50%,是 IDE 研發的硬骨頭。