排查配置问题的 IntelliJ 插件:Config Assistant

2 阅读4分钟

发现一个挺适合排查配置问题的 IntelliJ 插件:Config Assistant

最近在看 Spring Boot 配置的时候,发现一个我自己现在挺常用的小插件,叫 Config Assistant

它适合的场景很明确:

  • 对比测试环境和生产环境的 YAML 配置
  • 看服务迁移前后的配置差异
  • 临时查看别人发来的 YAML
  • 想格式化和对比配置,但又不想在项目里新建临时文件

如果你平时也会反复做这些事,这个插件用起来会比较顺手。


这个插件是干什么的

一句话说就是:

在 IntelliJ IDEA 里提供一个专门临时查看、整理、对比 YAML 的工作区。

它不是用来替代正式配置文件管理的,而是更适合这种临时分析场景:

  • 从群里复制一段 YAML 过来看看
  • 拿两份环境配置快速比一下差异
  • 保留几份不同版本的配置做对照

平时我们做这件事,往往会在项目里临时新建几个文件,粘贴进去,看完再删。

Config Assistant 就是把这个过程收到了 IDEA 右侧的一个工具窗口里。


它能做什么

当前我觉得最实用的几个功能是:

  • 新建多个 View,分别保存不同版本的 YAML
  • 视图按项目维度保存,重启 IDEA 之后还在
  • 一键格式化当前 YAML
  • 选择两个视图,用 IntelliJ 原生 Diff 直接比对
  • YAML 有问题时,会直接显示解析状态和错误反馈

我觉得它最有价值的一点是:

不需要再为了临时对比配置,在项目目录里建一堆一次性文件。


适合哪些使用场景

1. 环境配置比对

这是最直接的用法。

比如你怀疑测试环境和生产环境的配置不一致,就可以:

  • 一个 View 放 test 配置
  • 一个 View 放 prod 配置
  • 然后直接 Compare

像下面这些字段就很适合这样看:

  • spring.datasource.url
  • redis.host
  • redis.database
  • spring.profiles.active
  • 各种 feature flag

2. 服务迁移时核对配置

服务迁移或者拆分时,经常需要确认:

  • 有没有漏掉配置
  • 某些 key 有没有改错
  • 新旧配置差异到底在哪

这个时候把迁移前后的配置分别放进两个视图里,比直接肉眼扫更快。

3. 临时整理别人发来的 YAML

有时候别人发来的 YAML 缩进乱、注释乱,看起来很费劲。

你可以直接在插件里新建一个视图,粘进去,先点 Format,再继续看。

4. 保留多个快照

比如你要改一段配置,又想保留原始版本,就可以:

  • View 放原始配置
  • View 1 放改动版本
  • View 2 放另一个尝试版本

后面直接 compare 就行。


怎么用

整个上手过程挺简单。

第一步:打开 Config Assistant

在 IntelliJ IDEA 右侧工具窗口栏里打开 Config Assistant

默认会有一个 View

image.png

第二步:新建多个视图

点击 +,继续新建 View 1View 2

你可以按自己的习惯来放,比如:

  • View:测试环境
  • View 1:生产环境
  • View 2:迁移后的新版本

第三步:粘贴 YAML

把需要对比的配置直接粘进去就行。

这些内容会按项目维度保存,不用担心关掉 IDEA 就没了。

第四步:先格式化

如果内容比较乱,先点 Format

这样后面看差异会清楚很多。

第五步:Compare

点 Compare 后,选择两个保存视图,插件会直接打开 IntelliJ 原生 Diff。

这一点我觉得体验很好,因为不用学新的 diff 面板,还是 IDEA 自己那套。

image.png

第六步:看底部状态

如果 YAML 本身写错了,底部会显示解析状态,编辑区里也会有错误提示。

至少在临时排查时,能很快发现明显的缩进和语法问题。


我觉得它好用的点

我自己现在用下来,比较喜欢这几个地方:

1. 不污染项目

不用再建 tmp.yamlcompare-prod.yamltest-copy.yaml 这种一次性文件。

2. 很适合“临时分析”

这个插件不是让你长期编辑配置,而是为了让“临时看一眼、临时比一下”这件事更顺。

3. 项目级保存

有些配置今天没看完,明天继续看,这些视图还能接着用。


目前适合谁用

如果你经常做下面这些事,我觉得这个插件会比较有价值:

  • 经常排查 Spring Boot 配置问题
  • 经常对比不同环境配置
  • 经常做服务迁移或配置核对
  • 不想为了临时查看 YAML 在项目里建文件