Depends是个开源软件,刚发现,试用之后,效果惊艳。
它可以分析代码依赖关系。作为一个基础工具,仅仅提供了命令行。但通过graphviz(亲测可用),plantuml,DV8这些开源或者商业的工具,能基于depends的数据进行输出。
Depends生成的数据,直接进行展示,有时会出现线过多根本看不清的问题,如下图:
为此做了一个优化工具depends_opt,通过它可以优化数据,然后再提交给graphviz展示。
有关的使用方法及depends_opt,见附。
在实际项目中,选取了2个模块的代码,进行分析,示意如下:
提供简单使用说明,方便整理出代码模块关系图,从而能直观感受模块的当前状态,希望能对模块改进有所帮助。
约定:
- 以文件为最小单位,而不是以函数为最小单位。(这应该是depends的要求)
使用方法:
- 使用depends分析代码
java -jar tools\depends.jar --auto-include --format=dot cpp f:\...\VirtualGponOnu\ ponup_gpon
正常的话,会生成 ponup_gpon.dot
- 优化分析结果
tools\depends_opt ponup_gpon.dot 20
正常的话,会生成 ponup_gpon_2.dot。
过程中,会打印出调用次数过大的扇入扇出文件名称。
- 使用graphviz展示
首先安装graphviz。
使用 GVEdit 打开 ponup_gpon_2.dot,就能看到展示图了。
通过 菜单graph -- setting 可以根据需要生成 png/pdf 等格式的文件。
注意事项:
- Java建议安装最新的版本。
- Pdf文档非常宽,建议使用foxit打开。
- 上文粗体字,使用时需要根据自己的情况修改。
- 在展示方面,因为graphviz不接受”.”,所以,.h ,.c 以 _h, _c 显示。
附:
- Depends https://github.com/multilang-depends/depends/releases/
- Graphviz http://graphviz.org/