基于soot的java方法名生成报告
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于soot的java方法名生成报告相关的知识,希望对你有一定的参考价值。
0.生成XML格式文件
笔者使用soot将java文件解析生成xml格式文档,具体操作流程不再赘述。本文讨论执行结果的用途。笔者第一次采用的java文件如下:文件名为test.java
用soot解析后,生成如下所示的XML文件:
1.用xsl样式表链接XML文档
大家很容易看到上文是一个常见的xml文件,然后我使用Altova XMLSpy工具,编写XML文件对应的XSL文件,把 XSL 样式表链接到 XML 文档。即可生成如下所示的方法名列表,文件以html格式的方式预览:
2.第二组实例测试
笔者紧接着按这种方法测试另外一个java文件,与上个不同的是,这个java文件中有三个类
接下来将该java文件转化成xml文件时,笔者意外的发现生成的xml文件不是一个而是三个:
接下来笔者随意挑选一个XML文件提取方法名,以第一个mycode.forst.xml为例,结果如下:
可以看到这几组方法都归属于同一类即mycode.first
而第二个XML文件也是这样:
3.0总结
从上面两个例子可以看到soot在解析java文件时,是将整个java文件分成类来分别解析的。每个类文件中再解析方法。由于笔者的知识所限和XML文件的局限型,方法之间的关系很难通过xml文件解析出来。但是,经过自己的查询和尝试,特总结出以下几点对自己工作不足之处的解决办法。
3.1总结
java是由类封装而成的,类与类之间的关系,在以上实例中,没有很好地反映类与类之间的关系,而将类之间的依赖关系转化出来的一个好的办法就是UML图。如下:
3.2总结
在上面的实例中,使用soot将java源码转化成XML文件不能很好地反应类中各个内部的调用情况,解决这个问题的一个方法是:采用soot生成CFGs即控制流图。以上文的test.java为例,使用soot.jar将文件解析成控制流图,如下所示,这样就很好地反映出函数类部的调用路径:
3.3总结
下一步工作和方向:
在以上成果的基础上,笔者会进一步丰富自己的用例。然后找到java类中各个方法之间的关系。思路就不再赘述了。
如果图片不清晰的话大家可以下载PDF格式的:
链接: https://pan.baidu.com/s/1mhXUCac 密码: sq27
以上是关于基于soot的java方法名生成报告的主要内容,如果未能解决你的问题,请参考以下文章