当前位置: 首页 > 知识库问答 >
问题:

java - idea中如何导出这种清晰的调用层次关系??

朱风史
2023-10-28

想要的结果:
image.png

目前idea支持对调用层次的导出:
image.png

问题:如何导出第一张图中的那种效果?

共有2个答案

孟昆
2023-10-28

你在 Idea 里面找错地方了。

你开始的截图和 Idea 展示出来的结构是两个不同的东西。

前者是调用堆栈,是父节点调用子节点;后者是对调用者的追溯,是子节点调用父节点。

两者方向是相反的。

你想要的是调用堆栈。调用堆栈指的是线程执行到当前代码位置时的全部方法调用链,所以你只能在运行的时候打断点调试,当某个线程运行到断点时,自然就有调用堆栈(stack trace)了。

把堆栈打印出来之后,你可以自己调整缩进。

汪安然
2023-10-28

目前 IntelliJ IDEA 不直接支持导出这种清晰的调用层次关系图。

但是你可以尝试以下步骤:

  1. 使用 IntelliJ IDEA 的 "Analyze" -> "Call Hierarchy" 选项,找到并查看你的方法调用层次。
  2. 你可以手动复制和粘贴这些调用到某种绘图工具中(例如 Microsoft Visio,或者在线的 draw.io),然后手动创建图表。
  3. 或者你可以使用一些插件,例如 "IdeaCallgraph" 或 "Code Iris",这些插件可能可以导出为图片或者更易于理解的格式。

希望这些信息能够帮助你!

 类似资料:
  • 一种更清晰的Android架构 原文链接 : Architecting Android…The clean way? 译文出自 : 开发技术前线 www.devtf.cn 译者 : Mr.Simple & Sophie.Ping 过去几个月以来,通过在Tuenti网站上与@pedro_g_s和@flipper83(安卓开发两位大牛)进行友好讨论之后,我决定写这篇关于架构安卓应用的文章。 我写这篇文

  • 问题内容: 我正在寻找有关关系代数中theta join概念的清晰,基本的解释,并且可能需要一个示例(也许使用SQL)来说明其用法。 如果我正确理解,则theta联接是添加了条件的自然联接。因此,尽管自然联接在相同名称的属性之间强制相等(并删除重复的属性?),但是theta联接执行相同的操作,但是增加了在某种情况下。我有这个权利吗?以简单的术语(对于非数学家)的任何清楚的解释将不胜感激。 另外(很

  • 问题内容: 只是一个简单的问题: 如何清除外壳中的屏幕?我见过类似的方式: 这只是打开Windows cmd,清除屏幕并关闭,但是我希望清除外壳窗口 (PS:我不知道这有帮助,但是我使用的是Python 3.3.2版) 谢谢:) 问题答案: 对于macOS / OS X,您可以使用子进程模块并从外壳程序中调用“ cls”: 为了防止在窗口顶部显示“ 0”,请用以下内容替换第二行: 对于Linux,

  • 我正在Swing上阅读。我很难理解这一段:首先,作者说 组件可以放置在面板等容器内。容器本身可以放在其他容器中,因此类容器扩展了组件。图9.8显示了组件的继承层次结构, 注意:不幸的是,继承层次结构在两个方面有些不干净。首先,顶级窗口,如JFrame,是container的子类,因此也是Component的子类,但它们不能放在其他容器内。而且,JComponent是Container的子类,而不是

  • 我有这个条件(物业租金制度,租金按每晚计算) 所有者有一个或多个属性。属性有、和属性。 房源可以是:酒店(有3种房型),公寓/公寓,寄宿家庭的房子。 通过功能,客户可以订购在特定日期可用的一个或多个属性。 以下是注册表功能的预定义条件: 系统中有2个注册所有者和客户 业主1拥有10间酒店客房(标准型),每晚30美元,3间酒店客房(套房型),每晚60美元 业主2拥有3套公寓,每晚70美元,5套寄宿家

  • 我有两个共享一个公共键的表。我想要的是,当我加载第一个表的类时,我还会得到对应于第二个表的类的列表,它们在第二个表中共享键。 更具体地说:tableA有一个id(id1),它存在于tableB的多个条目中。但是,tableB使用复合键并使用id1和id2作为键。 我想实现的是,当加载表A的POJO时,我还会得到表B的所有条目,其中表A中的id1等于表B中的id1。