编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

Idea 插件之Breadcrumb(idea插件怎么用)

wxchong 2024-10-18 14:10:02 开源技术 9 ℃ 0 评论

问题场景及解决

日常开发场景中,经常会遇到大Json,对象多而且嵌套深,如何能快速找到某个属性所在层级呢?

  1. 通过搜索文本,确认字段位置?
  2. 通过JsonPath 来输出路径?

两者都不能很好地解决问题,相对好的方案是

  1. 通过搜索找到指定文本
  2. 通过查看Breadcrumb确认最终的字符的位置关系

Breadcrumb实现

知道面包屑这个名称Breadcrumb,找到跟Json相关的面包屑对象

com.intellij.json.breadcrumbs.JsonBreadcrumbsProvider

借助arthas进行stack

stack com.intellij.json.breadcrumbs.JsonBreadcrumbsProvider * -n 5

猜测其中的关键类

1. com.intellij.xml.breadcrumbs.BreadcrumbsXmlWrapper.computeCrumbs(BreadcrumbsXmlWrapper.java:33)

验证猜测,最终只需要提供editor, 及添加该 wrapper的位置即可。

// 生成面包屑包装对象
wrapper = new BreadcrumbsXmlWrapper(editor);
registerWrapper(fileEditorManager, fileEditor, wrapper);
// 面包屑添加的方式
private static void add(@NotNull FileEditorManager manager, @NotNull FileEditor editor, @NotNull BreadcrumbsXmlWrapper wrapper) {
  if (wrapper.breadcrumbs.above) {
    manager.addTopComponent(editor, wrapper);
  }
  else {
    manager.addBottomComponent(editor, wrapper);
  }
}

最后IDEA插件SequenceOutline的实现为

// SequenceOutline中的实现, sourceEditor(jsonEditor)
BreadcrumbsXmlWrapper wrapper = new BreadcrumbsXmlWrapper(sourceEditor);
sourcePanel.addToBottom(wrapper);

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表