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方法名生成报告的更多相关文章

  1. java方法名的重载

    方法的重载:方法名相同,参数不同,按照参数类型进行匹配 创建一个Simple 类,然后定义了两个方法 package cuteSnow; public class Simple { // 方法的重载, ...

  2. java方法里面生成js弹出框

    核心代码:方法参数要有response response.setContextType("text/html;charset=UTF-8"); PrintWrite out = r ...

  3. Android C代码回调java方法

    本文将讲述下列三种C代码回调java方法 1.c代码回调java空方法 2.c代码回调java int类型参数方法 3.c代码回调javaString类型参数方法 方法都差不多,先看c代码回调java ...

  4. Java学习-024-获取当前类名或方法名二三文

    今天,看朋友编写程序,打印日志时,需要记录当前类的类名以及当前方法的方法名,我发现 TA 将类名或者方法名直接写死在了代码中...虽说这样可以实现记录类名和方法名,但是当有特殊情况需要修改类名或者方法 ...

  5. Java学习-025-类名或方法名应用之一 -- 调试源码

    上文讲述了如何获取类名和方法名,敬请参阅: Java学习-024-获取当前类名或方法名二三文 . 通常在应用开发中,调试或查看是哪个文件中的方法调用了当前文件的此方法,因而在实际的应用中需要获取相应的 ...

  6. Monkey 生成报告方法

    Monkey 命令简介 Monkey 是 SDK 中附带的一个小工具,用来进行压力测试.进行压力测试之前,首先要进行安装 SDK ,并配置环境变量: 1.安装 Java JDK 并配置环境变量(计算机 ...

  7. Java学习-026-类名或方法名应用之二 -- 统计分析基础

    前文讲述了类名或方法的应用之一调试源码,具体请参阅:Java学习-025-类名或方法名应用之一 -- 调试源码 此文主要讲述类名或方法应用之二统计分析,通过在各个方法中插桩(调用桩方法),获取方法的调 ...

  8. java中由类名和方法名字符串实现其调用【反射机制】

    js里通过eval()函数,在知道某个方法名是可以实现调用该方法,那么在java里边又怎么实现的呢? java里边是通过反射机制来实现,代码如下: import java.lang.reflect.M ...

  9. java反射拼接方法名动态执行方法

    近期由于负责项目的一个模块,该模块下有很多分类,每个分类都有一个编码code,这个值是作为一个参数携带过来的.但是每个code确实对应一个方法的. code的值有很多个,自己又不想做ifelse或者s ...

随机推荐

  1. 11、增强型for循环对二维数组的输出(test8.java)

    由于笔者原因,这部分知识,尚不能整理出代码,笔者会好好学习增强型for循环中迭代起的相关知识,在笔者有能力,书写好这段代码后,将对本篇文章,进行二次修改,也同时欢迎大家与笔者交流,共同学习,共同进步. ...

  2. 微服务与网关技术(SIA-GateWay)

    一.背景 软件架构,总是在不断的演进中... 把时间退回到二十年之前,当时企业级领域研发主要推崇的还是C/S模式,PB.Delphi这样的开发软件是企业应用开发的主流.随着时间的推移,基于浏览器的B/ ...

  3. 实验:keepalived双主抢占模式和非抢占模式和IPVS

    内容: 一:概念.原理   二:实验过程 一.概念 一.keepalived原理及配置解析 keepalived:vrrp协议的实现 vrrp协议:virtual router redundancy ...

  4. C++7行代码实现求最大公约数

    最近在做奥赛题时碰到求最大公约数的问题,给出解决方案: int gcd(int a,int b){ int tmp = a%b; ){ return b; } else{ return gcd(b,t ...

  5. ajax+JQuery实现类似百度智能搜索框

    最近再学习ajax,上课老师让我们实现一个类似百度首页实现搜索框的功能,刚开始做的时候没有一点头绪,查阅大量网上的资源后,发现之前的与我们现在的有些区别,所以在此写出来,希望能对大家有所帮助. 下面先 ...

  6. Hive 系列(一)—— Hive 简介及核心概念

    一.简介 Hive 是一个构建在 Hadoop 之上的数据仓库,它可以将结构化的数据文件映射成表,并提供类 SQL 查询功能,用于查询的 SQL 语句会被转化为 MapReduce 作业,然后提交到 ...

  7. 小白学Python(2)——常用Python编程工具,Python IDE

    下载好Python,但是如何开始编程呢? 有几种方法, 1.第一个就是command lind 即为命令行的方式,也就是我们常说的cmd. 输入 win+ cmd 在命令行中再输入 python,即可 ...

  8. C#/Java 动态生成电子发票

    电子发票是电商时代的产物,PDF发票是最常见的电子发票之一.在这篇文章中,我将给大家分享一个免费的动态生成PDF电子发票的C#方案,并在文章末尾附上Java解决方案. 典型的发票包含客户和供应商的名称 ...

  9. 目标检测YOLO进化史之yolov1

    yolov3在目标检测领域可以算得上是state-of-art级别的了,在实时性和准确性上都有很好的保证.yolo也不是一开始就达到了这么好的效果,本身也是经历了不断地演进的. yolov1 测试图片 ...

  10. wordcloud库基本介绍和使用方法

    一.wordcloud库基本介绍 1.1 wordcloud库概述 wordcloud是优秀的词云展示第三方库 词云以词语为基本单位,更加直观和艺术的展示文本 1.2wordcloud库的安装 pip ...