Step1:生成Java代码静态分析结果
这里我们采用的是开源的工具java-callgraph来做Java代码的静态分析,根据官方的说明需按下面步骤来实现:
1.克隆项目到本地
git clone https://github.com/gousiosg/java-callgraph
2.用maven安装项目
mvn install
若未安装 maven,macOS用户可尝试使用 homebrew 安装,
brew update && brew install maven
,其他用户可访问官网安装。
3.打包被测试文件
我们需要借助Eclipse来将我们的被测试文件打包为jar包,打包后的文件记为 test.jar
。
4.运行工具生成结果
将 test.jar
移动到工具安装目录下的 ./target
目录下。
只需一个命令就可生成静态分析结果:
java -jar javacg-0.1-SNAPSHOT-static.jar test.jar
其中结果的具体含义请参照工具的官方介绍。
将结果保存为文件即可。
Step2:处理分析结果
需要把分析结果过滤得到我们需要用的信息,并用 json
格式存储,保存为文件 test.json
,格式规范如下:
1 | { |
其中 caller
代表函数调用者,callee
代表函数被调用者。
Step3:制作时序图
制作时序图采用的工具是Web Sequence Diagrams在线时序图绘制工具。
根据工具说明要将我们的函数调用关系再格式化,处理成形如 A->B: 调用
的格式,下面是格式化的 python
代码:
1 | # -*- coding: utf-8 -*- |
格式化后我们得到处理后的文本 test.txt
,将文本内容复制到Web Sequence Diagrams中即可,等待一会之后,我们就可以得到绘制好的时序图,可保存为文件。