V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
yanyin070321
V2EX  ›  程序员

[CodeGraph] 这样的代码可视化插件, 是你想要的吗?

  •  1
     
  •   yanyin070321 · 2024-08-06 14:52:53 +08:00 · 2969 次点击
    这是一个创建于 407 天前的主题,其中的信息可能已经有所发展或是发生改变。

    介绍

    不知道大家在看代码的时候是否有过这样的困扰?

    1. 看代码的时候忘记从哪里跳转过来的? 也不知道看了哪些部分? 需要反反复复倒退几遍才能有点印象
    2. 分析复杂函数时, 需要仔细浏览一遍代码才能找到关键调用链路?
    3. 当查看方法被哪些函数调用时, 好不容易把所有调用关系点了一遍, 发现还是脑子很乱, 还得再来一遍?

    为了解决上述这些困扰, 我开发了一款名为 code graph 的 jetbrains 插件, 可以实现将代码之间的调用关系可视化, 帮助我们更快更简单的阅读和理解代码.

    Imgur

    Features

    关键特性:

    1. 代码和图双向联动. 在代码中跳转时, 调用图会自动联动, 反之依然. 在不破坏大家阅读代码习惯的基础上提供了可视化的能力.
    2. 代码访问路径高亮. 所有点击过的代码会在调用图中高亮显示, 让大家可以清晰的观察到哪些看过了哪些没看过.
    3. 强大的过滤能力. 帮助大家快速过滤掉一些大家不关心的节点或者是边, 从而让调用图更加清晰明了.

    Imgur

    Imgur

    安装

    在 Intellij IDEA 的插件市场搜索 “CodeGraph” 即可安装 注意:目前仅支持 2022.3 及之后的版本

    用法

    找到需要生成调用关系图的方法, 点击鼠标右键, 选择 "Code Graph / Show Callee Graph For 'xxx'".


    软件刚刚才发布出来,希望各位老铁们多提一些建议🤗️🤗️🤗️...

    39 条回复    2024-08-08 11:14:25 +08:00
    zhuangzhuang1988
        1
    zhuangzhuang1988  
       2024-08-06 15:03:36 +08:00
    牛逼、
    forvvvv123
        2
    forvvvv123  
       2024-08-06 15:41:15 +08:00
    找了,是不是只支持 idea java ,goland 找了没有
    yanyin070321
        3
    yanyin070321  
    OP
       2024-08-06 15:45:10 +08:00
    @forvvvv123 嗯, 只有 Java 版本
    qczone
        4
    qczone  
       2024-08-06 16:02:35 +08:00
    感谢楼主,简单试了一下,感觉还不错。另外提醒大家搜索的时候记得搜 Code Graph ,少了个空格 idea 插件市场搜不出来。
    mine2224
        5
    mine2224  
       2024-08-06 17:07:24 +08:00
    牛逼,正好需要这样的功能
    stt66
        6
    stt66  
       2024-08-06 17:22:33 +08:00
    大佬牛批,就是能把支持的 idea 版本降低一点吗?老版本用不了。建议而已
    mine2224
        7
    mine2224  
       2024-08-06 17:25:20 +08:00
    @mine2224 #5

    安装后报错了:Plugin 'Code Graph' wasn't loaded because it's incompatible with the Kotlin plugin in K2 mode
    forvvvv123
        8
    forvvvv123  
       2024-08-06 17:36:30 +08:00
    @yanyin070321 那这么牛逼的插件我岂不是用不了了
    Geekerstar
        9
    Geekerstar  
       2024-08-06 17:56:45 +08:00
    搜不到这个插件呢
    harrisonkang
        10
    harrisonkang  
       2024-08-06 18:06:16 +08:00
    感谢楼主

    在使用过程中,发现在图中进行双击,是能联动跳转到相关方法的。但是通过点击代码之间的调用,图上相关方法并没有高亮。「`在代码中跳转时, 调用图会自动联动` 通过这个描述,我认为是有这个特性的,如果没有希望能加一个」

    IDEA 版本:IntelliJ IDEA 2023.2.4 (Ultimate Edition)
    harrisonkang
        11
    harrisonkang  
       2024-08-06 18:07:16 +08:00
    @Geekerstar #9
    `Code Graph` 需要中间加个空格
    fFeeOps
        12
    fFeeOps  
       2024-08-06 18:17:43 +08:00
    好使的老哥
    freefcw
        13
    freefcw  
       2024-08-06 18:52:30 +08:00
    最新的 2024.2 还不支持呀
    freefcw
        14
    freefcw  
       2024-08-06 19:01:11 +08:00
    给点建议

    1. 支持拖曳,目前看好像不行
    2. 缩放可以用 ctrl+鼠标滚轮,这个不错
    3. 点击 caller 能跳到 caller 调用的那一行,而不是直接调 caller 的声明(或者可以选择跳 caller 还是 caller 调用的那一行)
    4.默认的二级字体太小了,必须要缩放才能看清楚。缩放后又不能拖动,很麻烦

    其他目前看好评
    ageovb
        15
    ageovb  
       2024-08-06 19:02:57 +08:00
    如何清空 History
    PainAndLove
        16
    PainAndLove  
       2024-08-06 19:24:46 +08:00
    支持 webstorm (ts) 吗?
    baskbull
        17
    baskbull  
       2024-08-06 19:28:06 +08:00
    支持楼主,目前查看 caller 是有层级限制么? 这个可以调整吗
    yanyin070321
        18
    yanyin070321  
    OP
       2024-08-06 19:32:07 +08:00
    @freefcw 我还没注意到已经发布 2024.2 了, 我下个版本补上
    yanyin070321
        19
    yanyin070321  
    OP
       2024-08-06 19:32:41 +08:00
    @ageovb 为啥要清空 history?
    yanyin070321
        20
    yanyin070321  
    OP
       2024-08-06 19:33:19 +08:00
    @mine2224 看起来是和 kotlin 插件冲突了, 我研究一下啥问题导致的
    yanyin070321
        21
    yanyin070321  
    OP
       2024-08-06 19:34:08 +08:00
    @harrisonkang 现在这个版本在 caller 模式下高亮有点问题, 目前已经修复, 这周会发布第二个小版本
    yanyin070321
        22
    yanyin070321  
    OP
       2024-08-06 19:35:15 +08:00
    @baskbull 没有层级限制, 只是第一次展示默认只会展开 3 层, 如果要查看更多层, 可以通过节点的“+”按钮展开
    yanyin070321
        23
    yanyin070321  
    OP
       2024-08-06 19:35:46 +08:00
    @PainAndLove 目前只支持了 intellij, 等功能完善一点我再开始支持其他的 IDE
    Nasei
        24
    Nasei  
       2024-08-06 19:36:04 +08:00
    我感觉 vs 的就很好,甚至可以 debug 时显示
    yanyin070321
        25
    yanyin070321  
    OP
       2024-08-06 19:36:35 +08:00
    @forvvvv123 感谢认可, 暂时还来不及弄 golang, 等功能完善一点我再扩展其他的语言🙏
    yanyin070321
        26
    yanyin070321  
    OP
       2024-08-06 19:39:38 +08:00
    @freefcw 感谢建议
    1. 由于采用了自动布局, 所以没有开放拖动功能, 不然会破坏自动布局
    3. 可以点击里面的线, 可以跳转到对应的代码行; 点击节点只会跳转到对应的方法
    4. 现在这个版本默认会启用自动适应窗口大小, 导致默认情况下字体很小, 下个版本就没有这个问题了
    yanyin070321
        27
    yanyin070321  
    OP
       2024-08-06 19:43:54 +08:00
    @Nasei 老哥, 是哪个插件? 我学习一下
    zhangdafoye
        28
    zhangdafoye  
       2024-08-06 20:17:41 +08:00
    mark ,导出功能来一波
    freefcw
        29
    freefcw  
       2024-08-06 20:21:30 +08:00
    @yanyin070321 你说的拖动是指拖动节点吗?

    我指的是拖动画布,主要是有时候要去看一部分,整体有时候太多,字又小,不好弄。比如放大了,不能拖动,就只能看到一小部分节点
    Scarb
        30
    Scarb  
       2024-08-06 20:44:09 +08:00
    这个说白了就是 idea 的 hierarchy 可视化了。其实直接用 ctrl+alt+H 打开 hierarchy 效果也差不多。
    建议一个我个人觉得有用的功能,支持隐藏某些方法(右键-隐藏),因为很多方法并不是很重要。隐藏了之后把主链路的方法调用导出,可以作为文章的配图
    jorneyr
        31
    jorneyr  
       2024-08-06 22:41:52 +08:00
    只能说,很牛逼。
    yanyin070321
        32
    yanyin070321  
    OP
       2024-08-07 09:51:26 +08:00 via Android
    @freefcw 有道理,下个版本支持一波
    yanyin070321
        33
    yanyin070321  
    OP
       2024-08-07 09:52:53 +08:00 via Android
    @Scarb 是的,我做的时候发现 intellij 已经有类似的功能了,但是体验了一下,没法完全满足我的预期
    ageovb
        34
    ageovb  
       2024-08-07 10:30:14 +08:00
    @yanyin070321 #19 强迫症
    yanyin070321
        35
    yanyin070321  
    OP
       2024-08-07 11:22:32 +08:00
    @stt66 我验证一下有没有兼容性问题吧, 改动不大的话我支持一下
    Nasei
        36
    Nasei  
       2024-08-07 13:42:37 +08:00
    freemyspace
        37
    freemyspace  
       2024-08-07 14:21:08 +08:00
    有一款收费的 SequenceDiagram 插件
    4ra1n
        38
    4ra1n  
       2024-08-07 16:41:26 +08:00
    题主是代码层面,我主要做 CLASS 层面,可以看下我的开源项目:

    https://github.com/jar-analyzer/jar-analyzer

    不过我也想做一下类似的图效果,学习下
    yanyin070321
        39
    yanyin070321  
    OP
       2024-08-08 11:14:25 +08:00
    @4ra1n 你这个很强, 功能也比较完善了, 我的这个还是一个原型产品
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5063 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 08:02 · PVG 16:02 · LAX 01:02 · JFK 04:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.