画出java代码控制流图_软件测试:Soot生成控制流图

Soot生成控制流图

fa07696138931f683d6dd012ca94802d.png

1.下载jdk1.7并配置环境变量(下载地址:http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html),

下载eclipse kepler(下载地址:http://www.eclipse.org/downloads/packages/eclipse-standard-43/keplerr),

下载soot-2.5.0.jar(下载地址:http://pan.baidu.com/s/1kUzd8Tx)。

【安装遇到的问题】

1)jdk1.7安装,配置环境变量后报Error:could not open ‘C:\Program Files\Java\jre1.7.0_80\lib\amd64\jvm.cfg'.

解决方法:把环境变量Path里面的%JAVA_HOME%/bin放在最前面,若没有%JAVA_HOME%/bin,则创建。

2.把soot-2.5.0.jar导入项目,并复制粘贴到项目的bin目录,然后命令行进入项目bin目录,使用下面的命令生成dot文件。【sootTest为包(package)名,Triangle为类名】

java -cp soot-2.5.0.jar soot.tools.CFGViewer --soot-classpath .;"%JAVA_HOME%"\jre\lib\rt.jar sootTest.Triangle

1f06cb722796490986c3b704dfc952a4.png

290b74c282452c68f23faae257231606.png

执行后在项目bin目录下会生成sootOutput文件夹,里面有生成的dot文件,把生成的dot文件重命名。

d97fc25ea8dae3fa01cf4e726b6a9fc2.png

3.下载graphviz(不限版本),然后配置环境变量并安装(参考地址:https://blog.csdn.net/lanchunhui/article/details/49472949),使用dot -version查看安装是否成功。

4bf2666049576302bbff262a5b7daf56.png

4.命令行进入sootOutput目录下,使用dot -Tpng Triangle.dot -o Triangle.png命令,来可视化dot文件。

f1288b544cc20e66b046614e6c624e79.png

4c5d2c3802073ff993c59c3ad88c1fa0.png

生成Triangle类的控制流图:

b4862d2caf2fb2ccaf8533674805c02d.png

生成Test类的控制流图:

4d54a6b72cb0dcaea93dcf58915d5758.png

5.测试用例

8106407a458076a81bfcf818f96423a9.png

Triangle.java

packagesootTest;public classTriangle {public String check(int a, int b, intc){

String result= "";if(a == b && b ==c){

result= "该三角形为等边三角形";

}else if(a == b || a == c || b ==c){

result= "该三角形为等腰三角形";

}else if(a + b > c && a + c > b && b + c >a){

result= "该三角形为不等边三角形";

}else{

result= "这不是一个三角形";

}returnresult;

}

}

Test.java

packagesootTest;public classTest {private double num = 5.0;public double cal(intnum, String type){double temp=0;if(type == "sum")

{for(int i = 0; i <= num; i++){

temp=temp +i;

}

}else if(type == "average")

{for(int i = 0; i <= num; i++){

temp= temp +i;

}

temp= temp / (num -1);

}else{

System.out.println("Please enter the right type(sum or average)");

}returntemp;

}

}


版权声明:本文为weixin_28909503原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。