【译论】有人使用过将代码转换成思维导图/流程图的工具吗?

有什么好的代码转思维导图工具吗?有什么好的代码转思维导图工具吗?

本文文字及图片出自 news.ycombinator.com

你也许感兴趣的:

共有 43 条讨论

  1. 对于 Python,Pyreverse 是 Pylint 的一个子项目,它可以帮助制作图表:https://pylint.readthedocs.io/en/latest/pyreverse.html 它可以制作类图,甚至可以输出美人鱼图。

    此外,我还看到 Aider.chat 为 GPT-4 制作了一个文本 “repo map”,可以使用一些树状坐标。在过去,我最终使用 Python AST 模块和 LLM 来帮助我筛选所需的内容。

    最近我很高兴地发现,有一种方法可以让美人鱼图变得所见即所得/拖放编辑,开源的 https://excalidraw.com 有这种方法,而且我有提到它是开源的吗?有了 LLM,你就可以在几轮手动编辑之后,再次回到《美人鱼》的全循环。”活着真好!”

    但我更想要的是代码和图表的双向同步。就像没有语法高亮的黑白代码并不常见一样,我认为我们可以巧妙地整合更多的视觉线索和语境,从而更好地利用我们的视觉系统。在双向可视化编程语言中,有许多增强功能都是可能的,从自动生成带有美人鱼图的高级代码图,到 LLM 生成的高级摘要和链接到不同子系统的表情符号,再到为函数设置 X、Y 位置的可选功能,或许可以将其移动到更便于视觉效果的地方,作为地图的一部分。

    你或许可以请 Aider 制作 Markdown 代码。我和他没有任何关系,只是最近在这里看到的。很酷的事情正在发生!

    1. Excalidraw 看起来绝对是一款令人惊叹的工具,即使在移动设备上进行穹顶涂鸦后也是如此。

      非常感谢,我一直在寻找一款好工具来替代 Visio,但 Draw.io 和 lucidchart 都不符合我的要求。

    2. 我想说的是:其实你可以让 Aider 制作美人鱼代码图(如果你有一个不错的美人鱼渲染器,保存为 Markdown 文件也很不错),VS Code 扩展支持 Markdown 美人鱼。

    1. 我还是不明白你想要可视化什么。我明白你想创建一个图(或树,图的严格层次子集)。这就是思维导图。兔子洞的理论很深 https://en.wikipedia.org/wiki/Graph_theory 。但很多不同的东西都有这种数据结构。你想将文件夹中的文件可视化吗?你链接了一个 Java 类图–所以你想让工具解释代码?是 Java 吗?是面向对象语言(即具有分层类结构的语言)吗?你是想要一个自动工具,还是想要自己手动绘制思维导图?

    2. 您或许可以使用 https://github.com/IBM/tree-sitter-codeviews 来实现这一功能–不过自述文件中的截图比类图/ER 图要详细得多。

      如果树坐标器(tree-sitter)或 LSP 没有很好的方法来做到这一点,我会很惊讶的,更不用说一些语言(…有神论者? 不是语言无关的)方法了。

    3. 我通常使用 Doxygen,打开所有可能的图形。这很好,因为它可以解析多种语言。你不会得到真正漂亮的图表,但足以让你开始了解代码库。

    4. Scitools 的 Understand 有很好的图形生成器,其中的依赖关系图生成器可能就是你要找的。它不是免费的,也不是业余爱好者的廉价工具,但在商业静态分析工具中相对便宜。

      1. Scitools 对于研究庞大的遗留代码库来说非常有用。我希望它是免费的,或者有一个同样出色的开源替代工具。

    5. 这些链接基本上指向一个(非常简化的 UML)类图。

      正统的文档工具,如 Doxygen,可以为代码库做这些工作。

  2. 我现在正在做这项工作!Python 的原型将在几周后发布。https://valla.ai

    1. 这将会非常、非常、非常棒。我已经注册了你们的候补名单。干杯

  3. 我使用 Mermaid[1]。我以前用的是 Visual Paradigm,但它看起来太夸张了(至少对我来说)。对我来说已经足够了,尤其是与 Markdown 的整合。

    [1] https://mermaid.js.org/

    1. 我也有,但没有代码库到思维导图的转换,我想这正是 OP 问题的关键所在。我认为他在寻找一种代码可视化工具。

  4. 你是在找调用图之类的东西吗?

    有一种 pyan3 [1],虽然它不支持 python 3.7 以上版本,但我用过 v1.0.4,对我来说比使用 python 3.11 的最新版本更好用,不过也会有一些奇怪的问题,这取决于你的代码风格。

    通过快速搜索,还找到了 crabviz [2],它不仅支持 python,还支持更多语言。

    [1] https://github.com/Technologicat/pyan

    [2] https://github.com/chanhx/crabviz

    1. 您的网站完全破坏了我的后退按钮。

      第一个页面加载正常,但点击抽屉后,后退按钮就完全失灵了。

  5. 我希望这个领域能有新东西出现。我用过几年 Coati Software 的 Sourcetrail。不幸的是,它停产了。它是一款非常出色的软件,可以为代码库编制索引,并提供交互式探索界面。至少对我来说,它大大提高了对代码的理解和可读性。

    代码处于归档状态(https://github.com/CoatiSoftware/Sourcetrail)。在谷歌上搜索该软件,可以看到一些截图。

    1. 我仍然每天使用 Sourcetrail 检查 C++ 代码库。效果很好。我支付了第一个测试版的费用,但很遗憾公司没有盈利。它确实是一款伟大的产品。

  6. 不确定,过去我曾非连续性地使用 visual studio 的 NDepend 扩展来掌握 C++ 代码库,然后手动导出到 inkscape,以可阅读的方式手动重新排列,最终形成单页代码库小抄,用于简化新开发人员入职特定代码库的工作。

    这是一个传统的代码库,预计不会发生重大变化。

  7. 思维导图是什么意思?这个练习的目的是什么?

    搜索代码到 UML 图表生成器可能会有更好的结果。UML 图表可能太多了,但有一些方法可以从代码生成图表。一旦你有了一两张图,你也许就能把它简化成你想做的思维导图。

  8. 我使用 Node-Red 绘制思维导图。这是一个基于流程的编程环境,所以我的思维导图实际上是可执行的。

    所有流程都是非常大的 json 文件(对象数组),因此很容易生成可导入 Node-Red 的工作流程。

    https://nodered.org

  9. 我经常使用 UML,但它并不是我真正想要的,我想要一个更现代、更流畅、更多人都能使用的图形界面,在这里我不必手动输入每一件事,而且它还能拉入更复杂的信息,如 Github 仓库和类似性质的东西。

    Icepanel [1] 看起来很酷,但我还没测试过,也不确定它是否真的适合我的使用情况。它似乎主要用于 api 驱动的 rpc/grpc/rest 服务,而我想用它来可视化后端/infra/terraform 类型的东西,也许是 C4 风格。涉及的微服务要少得多。

    你可能会感兴趣。

    [1] – https://icepanel.io/

    另一个我很少看到的很酷的工具是 swimm.io 文档。

  10. markmap:markdown + mindmap:https://markmap.js.org/

    代码 LLM 为什么要在测试与测试代码之间的边上进行训练?

    1. django_extensions/utils/dia2django.py: https://github.com/django-extensions/django-extensions/blob/

      django_extensions/management/modelviz.py: https://github.com/django-extensions/django-extensions/blob/

      viewflow 支持 BPMN: https://github.com/viewflow/viewflow https://github.com/viewflow/cookbook/blob/main/guardian_perm

      维基百科提到了低代码和无代码应用程序的安全问题;支持从代码 -> 图表 UI -> 代码之间往返的工具很少见,甚至不可能。在规范化之后,还需要测试同构性或功能等同性。

      https://news.ycombinator.com/item?id=39139198

      > 所有程序进化算法都倾向于产生臃肿、复杂、冗余的程序(”意大利面条代码”)。为避免出现这种情况,MOSES 在每个阶段都会进行还原,将程序还原为正常形式。具体的规范化是基于霍尔曼的 “优雅规范形式”,它混合了线性和非线性运算符的交替层。由此产生的形式比布尔析取正则表达式要紧凑得多。正则化消除了冗余术语,使生成的代码更易于人类阅读,执行速度也更快。

      “确定一般布尔表达式可满足性的专家系统要素” (1990) https://dl.acm.org/doi/10.5555/100095

      > 约束微积分和可满足性判定(SD)算法都不要求表达式必须是结式或分结式正则表达式(Conjunctive or Disjunctive Normal Form)。

      IR:中间表示法:https://en.wikipedia.org/wiki/Intermediate_representation

      编译器可以通过几种方式从代码图生成代码图?

  11. 有了 Gemini 更大的上下文窗口,如果你能粘贴整个版本库,并要求它生成美人鱼 UML,这对我来说完全不足为奇。

    1. 顺便问一下,谷歌是否与你签订了保密协议?

  12. 我只用 excalidraw 绘制自由曲面图。也许这不是你所需要的,但它的性能和实用程序非常适合我的工作流程。

  13. 如果您有数据,可以使用开源图形工具 Graphviz 非常轻松地完成。

  14. 你可以试试 codetoflow.com,它不支持完整的代码库,但对单个代码文件来说已经足够好了。

  15. https://athenaintelligence.ai 我们的产品会渲染美人鱼标记符,其中有思维导图、ERD、流程图和其他高级组件。由于我们通过代理/LLM 运行所有内容,因此它成为了一种有趣的文字头脑风暴方式。

  16. 听起来像是人工智能的杀手级应用!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注