这是一个完全使用 AI 编程完成的 VSCode 插件,帮助嵌入式开发者可视化编辑 Kconfig 文件。

经过多日的测试,该插件现已正式发布在 VSCode 插件市场,欢迎大家下载使用!
https://marketplace.visualstudio.com/items?itemName=flyingcys.kconfig-visual-editor

在这里插入图片描述
本人一直从事嵌入式开发,没有系统性学习过 Typescript 和 VSCode 插件开发,完全靠 AI 编程完成这个插件的开发。

这个项目开发耗时极长,前后耗时在 4-5 个月左右,主要原因是 Kconfig 语法复杂,边界条件多,同时还涉及到 UI 交互设计,测试等环节。

前后开发过程中,使用了多种 AI 编程工具,包括 Cursor、Claude Code、Codex 、GLM-4.5/4.6 等工具和模型。最终在 Codex、GLM-4.6 的帮助下,完成了 Kconfig 各种细节语法问题的修复和实现。

本人接下来也会对该项目开发做一些总结分享。

什么是 Kconfig?

Kconfig 是 Linux 内核中用于配置管理的工具,当前也广泛应用于嵌入式系统应用开发和其他需要高度可定制化的项目中。

Kconfig 允许开发者通过图形界面(通常是基于文本的菜单)配置内核选项。

目前广泛使用的 Kconfig 编辑器主要有以下几种:

  1. Linux Kconfig 编辑器:这是 Linux 内核自带的 Kconfig 编辑器,功能强大。menuconfig 依赖 ncurses 库实现终端界面,界面上有一点的限制,比如不支持鼠标操作,界面交互体验一般。

  2. Kconfiglib:https://github.com/ulfalizer/Kconfiglib 这是一个 Python 库,提供了对 Kconfig 文件的解析能力,支持的语法会比 Linux Kconfig 编辑器更灵活。目前很多开源项目都使用 Kconfiglib 作为 Kconfig 配置管理工具。

在这里插入图片描述

VSCode Kconfig 插件

VSCode Kconfig 插件方面之前并没有通用的解决方案,其他更多插件只支持语法高亮,未完成语法解析和可视化编辑功能。

  1. nRF 针对 Zephyr 项目有一个可视化 Kconfig 显示的插件,https://marketplace.visualstudio.com/items?itemName=nordic-semiconductor.nrf-connect-extension-pack,但是 nRF 并没有开源相关代码。

  2. Espressif 的 esp-idf 有一个 Kconfig 插件,并开源了相关代码,但是只能针对各自的项目使用,不能通用。

https://github.com/espressif/vscode-esp-idf-extension

本项目也参考了 esp-idf Kconfig 插件的设计思路和实现方式,作为初始版本的基础。

但是在实际开发过程中发现, esp-idf Kconfig 插件支持的语法有限,只实现了 esp-idf 需要的语法,无法满足所有 Kconfig 语法需求,因此需要对其进行大量修改和扩展。

本项目的目标是开发一个通用的 Kconfig 可视化编辑 VSCode 插件,支持所有 Kconfig 语法,帮助嵌入式开发者更高效地进行配置管理。

相关代码已经开源在 GitHub 上,欢迎大家使用和贡献代码:
https://github.com/ai-embedded/vscode-kconfig-visual-editor

功能介绍

  1. Kconfig 文件语法高亮
  2. Kconfig 关键字智能自动补全
  3. 实时语法验证和错误报告
  4. 可视化显示 Kconfig 配置选项
  5. 支持多种 Kconfig 文件格式(Kconfig、Kconfig.*)
  6. 自动生成 config.h 文件
  7. 支持保存、丢弃和重置配置更改,提升操作体验
  8. 支持展开/折叠菜单、折叠帮助功能快捷键

在这里插入图片描述

语法高亮

语法高亮参考了开源项目 vscode-kconfig,对 Kconfig 相关语法进行了高亮显示,提升代码可读性。

在这里插入图片描述

支持的 Kconfig 语法

配置定义语句

  • config - 定义配置符号
  • menuconfig - 定义可配置的菜单项
  • choice - 定义选择组

数据类型

  • bool - 布尔类型
  • tristate - 三态类型 (y/m/n)
  • string - 字符串类型
  • int - 整数类型
  • hex - 十六进制类型

控制流程

  • if...endif - 条件块
  • menu...endmenu - 菜单块
  • choice...endchoice - 选择块
  • optional - 可选标记

依赖关系

  • depends on - 依赖条件
  • visible if - 可见性条件
  • select - 自动选择其他选项
  • imply - 弱依赖(暗示)

值设置

  • default - 默认值
  • def_bool - 定义布尔值及默认值
  • def_tristate - 定义三态值及默认值
  • range - 数值范围约束

文件包含与菜单

  • source - 包含 Kconfig 文件
  • rsource - 相对路径包含
  • osource - 可选包含
  • orsource - 可选相对路径包含
  • mainmenu - 主菜单标题
  • comment - 注释文本

文本与选项

  • prompt - 提示文本
  • help / ---help--- - 帮助文本块
  • option - 特殊选项 (defconfig_list, modules, allnoconfig_y)

表达式与运算符

  • 比较运算符:=!=<><=>=
  • 逻辑运算符:!&&||
  • 括号:()

常量与值

  • 三态常量:y (yes)、m (module)、n (no)
  • 数值:十进制和十六进制(0x 前缀)
  • 字符串:双引号字符串,支持转义序列
  • 注释:# 前缀
  • 行续接:\ 后缀

可视化配置编辑器

  • 交互式 menuconfig 风格界面
  • 搜索和过滤配置选项
  • 实时依赖关系解析和验证
  • 支持所有 Kconfig 类型(bool、tristate、string、int、hex、choice)
  • 可折叠的菜单树,便于导航
  • 保存、丢弃和重置配置更改
  • 多语言支持(中文和英文)

使用方法

打开 Kconfig 可视化编辑器

  1. 右键点击任何 Kconfig 文件
  2. 选择 “打开 Kconfig 可视化编辑器”
  3. 或者在编辑器标题栏点击配置图标

打开支持的 Kconfig 文件后,插件会自动解析文件,才能出现相关右键菜单和按钮。

在这里插入图片描述

编辑配置

  • 使用搜索框快速查找配置项
  • 点击复选框、输入框或下拉菜单修改配置值
  • 点击 “Save” 保存更改
  • 点击 “Discard” 丢弃未保存的更改
  • 点击 “Reset” 重置所有配置为默认值

在这里插入图片描述

其他

测试

本插件已经过大量 Kconfig 文件的测试,涵盖多种复杂语法和边界条件。当前项目测试文件位于仓库的 test-kconfig 目录下,欢迎大家贡献更多测试用例。

当前测试用例下,插件显示、解析、存储功能与 Kconfiglib 行为一致,表现稳定可靠。

在这里插入图片描述

许可证

当前项目采用 Apache License 2.0 许可,欢迎大家集成和二次开发,也欢迎提出建议和反馈,提供更多测试用例帮助我们持续改进。

致谢

本扩展的开发参考了以下优秀的开源项目:

  1. Kconfiglib - Kconfig 语法兼容性参考
  2. vscode-esp-idf-extension - UI 设计参考
  3. vscode-kconfig - 语法高亮显示参考

感谢这些项目的作者和贡献者的杰出工作,以及他们对开源社区的贡献。

后续计划

  1. 计划增加更现代化的 UI 设计,提升用户体验。
    在这里插入图片描述

  2. 当前插件在开发过程中发现,存在大量 source、rsource、osource 等包含文件的 Kconfig 文件,导致解析变得复杂,可视化显示时间过长。

  3. 计划支持 RT-Thread、Zephyr 等大型项目的 Kconfig 文件中的环境变量。

总结

本项目旨在为 VSCode 提供一个强大的 Kconfig 可视化编辑器,帮助嵌入式开发者更高效地进行配置管理。通过集成 Kconfiglib 和其他开源项目的优秀设计理念,我们实现了丰富的功能和良好的用户体验。

本人也将持续通过 AI 编程工具,不断开发各种嵌入式开发需要的插件和工具,致力于提升嵌入式开发的效率和体验。欢迎大家使用本插件,并提出宝贵的意见和建议!

也欢迎嵌入式开发工程师们分享、讨论各种嵌入式开发工具,可以提升嵌入式开发的便利性和效率!

如果你觉得本文对你有帮助,欢迎点赞、收藏、分享和评论,感谢支持!

对 AI 编程有兴趣的小伙伴,可以关注个人公众号:燕十三的嵌入式AI之旅

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐