个人简介

Echo Blog


江湖无名 安心练剑
  • JavaParser 系列学习-10-java-call-graph 生成Java代码中方法之间的调用链
    java-callgraph 这是一个用于在Java中生成静态和动态调用图的程序套件。 javacg-static:从一个jar文件中读取类,遍历方法体并打印调用者-被调用者关系的表格。 javacg-dynamic:作为Java代理运行,并对用户定义的一组类的方法进行插装,以跟踪它们的调用。 在JVM退出时,打印调用者-被调用者关系的表格,以及调用次数。 编译 java-cal...
    2020-05-29 06:24:18 | java
  • JavaParser 系列学习-10-java-all-call-graph 生成Java代码中方法之间的调用链
    方法 在很多场景下,如果能够生成Java代码中方法之间的调用链,是很有帮助的,例如分析代码执行流程、确认被修改代码的影响范围、代码审计/漏洞分析等。 IDEA提供了显示调用指定Java方法向上的完整调用链的功能,可以通过“Navigate -> Call Hierarchy”菜单(快捷键:Ctrl+Alt+H)使用;Eclipse也提供了相同的功能。但以上都需要针对每个方法进行手工...
    2020-05-29 06:24:18 | java
  • JavaParser 系列学习-09-精准测试:基于 asm+javaparser 调用链差异化对比实践
    适用人群 如果你也面临这些问题 接触到的测试都是比较偏向底层,中台化的服务,对上层业务会比较陌生 日常开发提交测试点时会出现遗漏的情况,导致测试阶段漏测 开发测试比高,经常多个开发对一个测试,且日常发版频繁 想自己搞一套精准测试框架辅助测试 那么你可能也需要这么一套精准测试思路,帮助你精准且快速的进行日...
    2020-05-29 06:24:18 | java
  • JavaParser 系列学习-08-变量和引用
    解决符号和参考 与其他解析器一样,JavaParser接收源代码中存在的信息,并将其组织成一棵树,即抽象语法树。 在许多情况下,AST中显示的信息足以满足用户的需求。 但是,在其他情况下,您可能需要详细说明AST并计算其他信息。 特别是,您可能需要解析引用并找到节点之间的关系。 从某种意义上讲,这意味着跟踪新链接并将树转换为图形。 当我们找到Java代码中使用的名称时,我们会将其...
    2020-05-29 06:24:18 | java
  • JavaParser 系列学习-07-格式化输出&词汇保存
    漂亮的印刷和词法保存 您可以将JavaParser用于不同的目的。 最常见的两个是代码生成和代码转换。 在这两种情况下,您最终都将生成Java代码,可能将其存储在扩展名为.java的文件中。 在 CompilationUnit 上对 toString() 的简单调用将返回一个字符串,可用于编写源代码。 我们面临的问题是:它将如何格式化AST中的代码? 答案是两种方式之一: ...
    2020-05-29 06:24:18 | java
  • JavaParser 系列学习-06-comments 注释
    注释-这里是龙 这个问题从哪里开始? -用经典的程序员隐喻看来。 我想说,作为开发人员社区,已经花了更多时间讨论关于注释解析的想法,而不是JavaParser项目中的任何其他功能。 很难开始,也许是因为它的尾巴(坏双关语)还没有结束。 在撰写本文时,该库的下一个主要版本计划从头开始重建行为。 为什么评论如此具有挑战性? 好的,正式的注释不构成语言的抽象语法树的一部分。 抽象部分...
    2020-05-29 06:24:18 | java
  • JavaParser 系列学习-05-快速访问
    飞行访问 在本章中,我们将不停地浏览JavaParser库提供的主要功能。 您可以将其视为快速入门指南,使您可以开始在本地计算机上运行。 我们将分析一个有趣的代码,尽管基本的计算器以反向波兰符号格式输入输入并计算结果(维基百科)。 它还具有一个简单的存储功能,可以存储单个数字,类似于您会发现的普通计算器。 该类的长度合理,因此可以在附录A中找到。 随行同伴 首先,尽管我们应该在...
    2020-05-29 06:24:18 | java
  • JavaParser 系列学习-01-AST 简单介绍
    AST 抽象语法树简介 抽象语法树简介 如果不先了解语法树的概念,就不可能考虑Java语言解析器将如何有用。 首先,我们尝试想象源代码可以表示为一棵树。 两者都有一个起点,从这里分支彼此独立地形成,无论是作为代码语句,还是在树的情况下,都是实际的分支。 与真实树的分支一样,将复杂的语句分解成较小的部分的过程将继续进行,直到我们碰到末端或叶子为止。 代表Java代码的树将具有一个代...
    2020-05-29 06:24:18 | java