-
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