由于业务需要对市面上比较常见的代码可视化工具进行了调研,根据调研体验做了对比统计。本调研评价侧重对java大型项目的可视化效果,仅供参考。
可视化工具参考:
调研对比分析
推荐:scitools understand、Graph Buddy
工具 | 使用体验 | 支持语言 | 是否开源 | 功能列表 | 备注 |
---|---|---|---|---|---|
Visustin | 1. 仅支持windows系统 2. 除基本逻辑语句(if、while等)外,对于业务逻辑代码可解释性差 3. 不支持函数调用嵌套识别 4. 流程图可编辑,对于无法解释的复杂意图可编辑优化 | 支持49种编程语言(包括python、java、shell、SQL) | 闭源且收费(有破解版) | 1. 支持文件导入 2. 一键绘制流程图 3. 流程图可编辑(拖动、编辑内容) | 1. 比较适用于简单的算法讲解以及文档编写课程图绘制 2. 可能对于简单工程适应性比较好,不便于应用于多模块的复杂工程(不同模块之间的联系需要自己建立) |
Sourcetrail | 未成功 | 支持C、C++、Java 和 Python | 免费且开源github.com/CoatiSoftwa... | 未成功 | github.com/CoatiSoftwa... 根据git ISSUE, mac中解析java项目仍存在bug |
Embold | 1. 有IDEA插件,产品较为全面 2. 有使用文档:Installation and Backup Guide -- Code Quality Docs 3. 主要用于检查代码缺陷,不能生成代码流程图,快速了解工程 | 支 C/C++、C#、Objective C 和 Java等 | 有免费版但未开源 | 1. 自动分析单个文件的代码缺陷 2. 扫描全部文件的代码缺陷 3. AUTODOC自动生成注释文档 | 1. 主要用于检查代码缺陷,不能生成代码流程图 2. 生成的注释过于简单,作用有限 |
Scitools understand | 1. 评价最好的代码可视化软件 2. 试用版只能用demo工程,不可自己导入工程 | 支持C++、Java、Jovial、Pascal、ADA、.NET等 | 收费试用需申请 | 1. 支持工程项目导入 2. 支持函数级别流程图绘制 3. 支持函数内部流程图绘制 | 1. 兼备函数调用关系的梳理和函数内部代码逻辑的数据 2. 同时可对于类文件的调用关系进行梳理 |
Graph Buddy | 1. 有IDEA插件,产品全面 2. 支持嵌套、最小单元为函数 3. 可自动生成流程图4. 流程图可编辑性较差(仅可拖动) | java、scala | 免费且开源github.com/VirtusLab/g... | 1. 自动生成流程图 2. 自定义绘图 3. 流程图梳理工具(筛选、查询、关系查询) 4. 流程图保存 | 1. 侧重函数层面的调用关系梳理,而且对于多文件间函数调用识别准确率一般 2. 对于多层嵌套复杂工程,自动生成流程图体验一般,需进行筛选梳理 3. 对于自定义绘制流程图体验较好 4. 相当于一个便捷的内嵌代码流程图绘制工具 |
code2flow | 1. 根据伪代码生成流程图 2. 不支持函数调用嵌套识别 3. 流程不可编辑 4. 界面交互性更强,可点击代码对应行会在图中又响应 | 未特殊指定 | 收费,但有试用期 | 1. 实时根据代码绘制流程图 2. 可共享、共同协作 | 1. 与Visustin体验类似 2. 与Visustin不同在于,code2flow是一行一个流程框, Visustin仅在逻辑语句前后划分流程框 |
Source insight | 1. 仅支持windows系统 2. 提供的功能IDEA基本全部支持 3. 相当于一个源码阅读辅助器,无绘图功能 | 支持C、C++、Java 和 Python等 | 收费,但有试用期 | 1. 查看函数调用上下文窗口 2. 查看函数关联调用 | 1. IDEA已支持其核心功能 2. 对于大型JAVA工程,IDEA支持性更好 |
可视化工具使用测试截图
Visustin使用测试
函数调用
简单的for语句
简单while语句
长if语句
for循环嵌套if
Sourcetrail使用测试
加载java环境的bug
问题解决参考:github.com/CoatiSoftwa...
虽然解决不了
EMBOLD
自动扫描单个文件
扫描全部文件