iFlyCode 设置与配置系统分析
版本: 3.4.2-222 | 分析日期: 2026-05-11
1. 概述
iFlyCode 使用 IntelliJ 的 PersistentStateComponent 模式持久化插件配置。共有 4 个设置状态类,分别存储核心设置、请求设置、单测设置和批量单测设置。
2. 设置类清单
2.1 AICodeSettingsState (174 strings)
路径: com/aicode/settings/AICodeSettingsState存储: AICodeSettingsState.xml (通过 plugin.xml 注册) 职责: 核心设置 — 插件的全局配置
配置字段:
| 字段 | 类型 | 说明 |
|---|---|---|
| autoTrigger | boolean | 自动触发代码补全 |
| sendKey | SendKeyEnum | 发送消息快捷键 (ENTER/ENTER_SHIFT) |
| modelCode | String | 当前选择的模型代码 |
| modelInfoList | List<FunctionModelInfo> | 可用模型列表 |
| inlineChatModelCode | String | 内联聊天使用的模型代码 |
| triggerTime | int | 自动触发延迟时间 |
| loginUrl | String | 登录 URL |
| feedbackUrl | String | 反馈 URL |
| maintainRepoUrl | String | 维护仓库 URL |
| codeSearchServerUrl | String | 代码搜索服务 URL |
| officialWebsiteUrl | String | 官网 URL |
| codeKnowledgeWebUrl | String | 代码知识库 Web URL |
| userCenterWebUrl | String | 用户中心 Web URL |
| enterpriseId | String | 企业 ID |
| enterpriseName | String | 企业名称 |
| testFramework | UnitTestBaseEnum | Java 测试框架 (JUNIT_FOUR/JUNIT_FIVE) |
| mockFramework | UnitTestMockEnum | Java Mock 框架 (POWER_MOCK/DISABLED) |
| modifyTestFrame | String | 修改测试框架 |
| modifyTestFramenNum | int | 修改测试框架数量 |
| pyTestFramework | String | Python 测试框架 |
| pyMockFramework | String | Python Mock 框架 |
| pyModifyTestFrame | String | Python 修改测试框架 |
| pyModifyTestFramenNum | int | Python 修改测试框架数量 |
| modelList | String | 模型列表 |
| codeCompleteDisableLang | String | 禁用代码补全的语言 |
| generateUnitTestFile | boolean | 是否生成单测文件 |
| unitRequestInterval | int | 单测请求间隔 |
| lineToolsType | String | 行工具类型 |
| lineToolsPermissionDocComments | boolean | 行工具文档注释权限 |
| lineToolsPermissionUnitTesting | boolean | 行工具单测权限 |
| openIFlyTest | boolean | 是否开启 iFlyTest |
2.2 AICodeRequestSettings (64 strings)
路径: com/aicode/settings/AICodeRequestSettings存储: AICodeRequestSettings.xml实现: PersistentStateComponent<CodeGenerateRequestState>职责: 代码补全请求设置
配置字段 (来自 CodeGenerateRequestState):
| 字段 | 类型 | 说明 |
|---|---|---|
| inlayTextColor | Color (via ColorConverter) | 补全文字颜色 |
| internalDisableHttpCache | boolean | 内部禁用 HTTP 缓存 |
| disableHttpCache | boolean | 禁用 HTTP 缓存 |
| requestLimitNotificationShown | boolean | 请求限制通知是否已显示 |
ColorConverter: 使用 ColorUtil.toHtmlColor() 将 java.awt.Color 与 HTML 颜色字符串互转,实现 XML 持久化。
2.3 UnitTestSettingsState (73 strings)
路径: com/aicode/settings/UnitTestSettingsState存储: UnitTestSettingsPlugin.xml实现: PersistentStateComponent<UnitTestSettingsState>职责: 单元测试设置
配置字段:
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| testFramework | UnitTestBaseEnum | JUNIT_FOUR | Java 测试框架 |
| mockFramework | UnitTestMockEnum | POWER_MOCK | Java Mock 框架 |
| enabledGenerateByTemplate | boolean | - | 是否启用模板生成 |
| testPrivate | boolean | - | 是否测试私有方法 |
| testClasPath | String | - | 测试类路径 |
2.4 BatchUnitTestSettingsState (84 strings)
路径: com/aicode/settings/BatchUnitTestSettingsState存储: BatchUnitTestSettingsPlugin.xml实现: PersistentStateComponent<BatchUnitTestSettingsState>职责: 批量单元测试设置
配置字段:
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| testFramework | UnitTestBaseEnum | JUNIT_FOUR | Java 测试框架 |
| mockFramework | UnitTestMockEnum | - | Java Mock 框架 |
| testGenerationProcess | TestGenerationProcess | - | 生成流程 (BUILD/BUILD_EXECUTE) |
| enabledGenerateByTemplate | boolean | - | 是否启用模板生成 |
| testPrivate | boolean | - | 是否测试私有方法 |
| testModuleDirectory | String | - | 测试模块目录 |
| batchTestUnitLimt | BatchTestUnitLimt | - | 批量单测限制 |
3. 设置持久化架构
┌─────────────────────────────────────────────────────────────┐
│ IntelliJ IDEA │
│ │
│ PersistentStateComponent 模式 │
│ ├── AICodeSettingsState → AICodeSettingsState.xml │
│ ├── AICodeRequestSettings → AICodeRequestSettings.xml │
│ │ └── CodeGenerateRequestState │
│ │ └── ColorConverter (Color ↔ HTML String) │
│ ├── UnitTestSettingsState → UnitTestSettingsPlugin.xml │
│ └── BatchUnitTestSettingsState → BatchUnitTestSettingsPlugin.xml │
│ │
│ XML 持久化路径: │
│ ~/.IntelliJIdea/config/options/ │
│ ├── AICodeSettingsState.xml │
│ ├── AICodeRequestSettings.xml │
│ ├── UnitTestSettingsPlugin.xml │
│ └── BatchUnitTestSettingsPlugin.xml │
└─────────────────────────────────────────────────────────────┘4. 关键发现
多模型支持:
modelInfoList(List<FunctionModelInfo>) 和modelCode表明 iFlyCode 支持多模型切换,内联聊天还有独立的inlineChatModelCode。企业定制:
enterpriseId和enterpriseName字段表明企业版有独立的配置,与PluginSceneEnum(SAAS/PRIVATE/INNER) 对应。双语言测试框架: Java 和 Python 有独立的测试框架配置(
testFramework/mockFrameworkvspyTestFramework/pyMockFramework)。代码补全颜色定制:
inlayTextColor使用ColorConverter将java.awt.Color转为 HTML 颜色字符串持久化。HTTP 缓存控制:
disableHttpCache和internalDisableHttpCache双层缓存控制,内部版本可能有额外的缓存禁用选项。行工具权限:
lineToolsPermissionDocComments和lineToolsPermissionUnitTesting控制行工具的功能权限,可能用于企业版功能限制。URL 集中管理: 6 个 URL 字段(loginUrl, feedbackUrl, maintainRepoUrl, codeSearchServerUrl, officialWebsiteUrl, codeKnowledgeWebUrl, userCenterWebUrl)集中管理所有外部服务地址。
默认值: Java 测试框架默认为 JUnit 4,Mock 框架默认为 PowerMock,说明插件面向的是传统 Java 项目。