BMC Studio 开发辅助插件
为 BMC Studio 开发者提供强大的 JSON 配置文件智能支持

🚀 功能特性
BMC Studio 插件为复杂的 JSON 配置文件提供类似 IDE 的智能支持:
🎯 核心功能
- 🔍 定义跳转 -
Ctrl+点击 跳转到 Statements、ProcessingFlow、ReqBody、Uri 定义
- 💡 智能提示 - 鼠标悬停显示完整定义内容和类型信息
- ⚡ 自动补全 - 输入
Statements/ 触发方法名智能提示
- ❌ 错误检测 - 实时语法验证和错误提示
- 🎨 语法高亮 - 引用语法的视觉装饰和状态指示
- 🔄 芯片总线例外 - ManagementTopology 中的芯片在不同总线时允许重复配置
🆕 SR 文件预览 (v0.0.19)
- 📄 实时预览 - 类似 Markdown 预览的 .sr 文件实时预览功能
- 右侧并排显示合并后的内容
- 编辑即预览,无需保存
- 支持 Ctrl+F 搜索
- 🔀 智能合并 - 自动检测并合并多个相关文件
- 主文件+扩展构型 (XXX.sr + XXX_soft.sr)
- 多文件组合构型 (basic_info + mgmt_model + version)
- 📌 来源显示 - 顶部显示参与合并的源文件列表
🆕 管道表达式计算 (v0.0.18)
- 📊 表达式求值 - 支持完整的数学和逻辑运算
- 算术:
+, -, *, /, // (整除), % (取模)
- 比较:
>, <, >=, <=, ==, !=
- 逻辑:
&&, ||, !
- 位运算:
&, |, ^, ~, <<, >>, >>>
- 三元:
?:
- 🔗 管道链 - 多级管道处理
$1 |> expr($1 + 1) |> expr($1 * 2)
- 多输入:
$1;$2;$3 |> expr($1 + $2 + $3)
- 📝 C 风格格式化 - string.format 函数
- 精度:
%.2f, 宽度: %10s, 填充: %010d
- 对齐:
%-10s (左), 进制: %x, %o, %b
🆕 MDB缓存功能 (v0.0.14)
- 📦 自动归档 - 自动识别和归档
output/mdb 目录到本地缓存
- 💾 智能缓存 - 缓存到
~/.cache/openubmc/mdb_cache,支持自定义路径
- 🔄 实时同步 - 监听mdb目录变化,自动更新缓存
- 🔍 快速搜索 - 在所有缓存的模型文件中搜索关键字
- 📖 组件浏览 - 快速浏览和打开任意组件的模型文件
- 💬 MDB悬浮提示 - 在JSON文件中显示MDB模型引用信息
📝 支持的语法类型
${Statements/methodName()} - SQL 语句引用
ProcessingFlow[index] - 处理流程数组元素
ReqBody.path.to.field - 请求体字段路径
Uri.paramName - URI 模板参数
🏗️ 适用场景
- 复杂的 API 接口配置文件
- 包含多层嵌套和引用关系的 JSON 配置
- 需要快速导航和验证的大型配置文件
- BMC Studio 项目开发和维护
- MDB模型文件的管理和查看
📦 安装使用
通过 VS Code 扩展商店
- 打开 VS Code
- 按
Ctrl+Shift+X 打开扩展面板
- 搜索 "BMC Studio"
- 点击安装
手动安装
# 克隆项目
git clone <repository-url>
cd plugin_demo
# 安装依赖
npm install
# 编译插件
npm run compile
# 打包扩展
npm run plugin-package
MDB缓存快速开始
自动归档(推荐)
- 打开包含
output/mdb 或 manifest/output/mdb 的工作区
- 插件会自动检测并归档到
~/.cache/openubmc/mdb_cache
手动归档
命令面板 (Ctrl+Shift+P) -> BMC Studio: 归档MDB目录
查看缓存
命令面板 -> BMC Studio: 显示MDB缓存信息
浏览组件
命令面板 -> BMC Studio: 浏览MDB组件
🛠️ 开发环境
系统要求
- VS Code 1.80.0 或更高版本
- Node.js 16+
- TypeScript 5.8+
快速开始
# 安装开发依赖
npm install
# 启动开发模式
npm run watch
# 运行测试
npm test
# 启动调试 (按 F5 或使用 VS Code 调试配置)
项目结构
plugin_demo/
├── src/ # 源代码
│ ├── extension.ts # 插件主入口
│ ├── codex/ # 核心解析器
│ │ ├── statements.ts # Statements 解析
│ │ ├── processing-flow.ts # ProcessingFlow 解析
│ │ ├── req-body.ts # ReqBody 解析
│ │ └── statement-provider-demo.ts # Provider 实现
│ ├── common/ # 通用工具
│ │ └── json-file.ts # JSON 解析核心
│ └── test/ # 测试套件
├── package.json # 插件配置
├── tsconfig.json # TypeScript 配置
└── webpack.config.js # 打包配置
🧪 测试
我们维护了一套完整的测试体系,确保插件的稳定性和可靠性。
快速测试
# 运行所有测试
npm test
# 运行单元测试
npm run test:unit
# 运行集成测试
npm run test:integration
# 生成覆盖率报告
npm run test:coverage
测试覆盖
- ✅ 190/190 测试通过 (100% 成功率)
- ✅ 单元测试 - 核心逻辑和解析器
- ✅ 集成测试 - VS Code API 集成
- ✅ 端到端测试 - 完整用户流程
测试架构
src/test/
├── fixtures/ # 测试数据
├── unit/ # 单元测试
├── integration/ # 集成测试
├── utils/ # 测试工具
└── README.md # 详细测试文档
详细的测试指南请参考测试文档。
📚 开发指南
添加新的语法支持
- 在
src/codex/ 下创建新的解析器类
- 继承
InterfaceMappingParser 基类
- 实现必要的解析方法
- 在
extension.ts 中注册 Provider
- 添加相应的测试用例
调试技巧
- 使用 VS Code 内置调试器(F5)
- 查看
Output 面板的插件日志
- 使用
console.log 在扩展开发主机中调试
- 利用测试套件快速验证功能
贡献代码
- Fork 项目并创建特性分支
- 确保所有测试通过 (
npm test)
- 遵循现有的代码风格 (
npm run lint)
- 添加适当的测试覆盖
- 提交 Pull Request
📄 许可证
本项目采用LICENSE.txt许可证。
🤝 支持
- 🐛 问题报告: 请在 Issues 中报告 bug
- 💡 功能建议: 欢迎提出新功能想法
- 📝 文档改进: 帮助完善文档和示例
- 🧪 测试贡献: 添加测试用例和场景
📈 版本历史
- v0.0.19 - SR 文件预览功能,智能文件合并,实时刷新
- v0.0.18 - 管道表达式计算引擎,C风格格式化,完整运算符支持
- v0.0.17 - 重复对象检测,校验功能修复
- v0.0.16 - 边栏图标优化,MDB菜单改进
- v0.0.15 - ReqHeader 引用支持
- v0.0.14 - MDB缓存管理功能,基于MDB的悬浮提示,组件浏览
- v0.0.13 - SR语言服务器支持,完整测试覆盖
- v0.0.12 - 增强的自动补全,改进的错误检测
- v0.0.11 - 多文档支持,性能优化
- v0.0.10 - Bug修复,悬浮提示优化
- 更早版本 - 参见 CHANGELOG.md
🎉 感谢使用 BMC Studio 插件!
让复杂的 JSON 配置开发变得简单高效。
| |