java-callgraph2 icon indicating copy to clipboard operation
java-callgraph2 copied to clipboard

作者您好,请问您的工具现在还不能处理Java的哪些特性呀?就是哪些场景的调用关系是缺失的?能获取类级别的调用关系吗?

Open lly-ss opened this issue 1 year ago • 5 comments

lly-ss avatar Apr 19 '23 14:04 lly-ss

现在不能获取的方法调用关系

  • 反射,如果是常规的方式使用,应该也能支持,现在没实现
  • 一些自定义的写法,比如类似Thread子类直接调用的是start方法,实际调用的是run方法,这种可以做自定义处理

类之间的调用关系会输出在class_name文件中,如果有需要的话可以把格式调整一下 需要使用类之间的依赖关系吗

Adrninistrator avatar Apr 19 '23 14:04 Adrninistrator

谢谢您的回复! 我暂时不需要使用类之间的依赖关系,但是生成的几个txt文件的内容有些地方不太理解,不知您是否会更新一些说明文档? 另外,您的工具有对应论文吗?实现的算法是在已有的算法上改进还是您自创的呀?我使用您的工具比使用soot生成调用图快了很多,感到非常惊喜!

lly-ss avatar Apr 20 '23 12:04 lly-ss

生成的文件作用可以参考这个目录,https://github.com/Adrninistrator/java-all-call-graph/tree/main/java-all-call-graph/src/main/resources/_jacg_sql,每个文件对应一个数据库表 没有写论文,一开始是参考https://github.com/gousiosg/java-callgraph,支持class文件中通过方法调用指令能够直接获取到方法调用关系,后来增加了通过通过方法调用指令不能直接获取到方法调用关系,没有用到太复杂的算法,都是根据实际情况分析怎么去实现

Adrninistrator avatar Apr 20 '23 14:04 Adrninistrator

谢谢您的回复! 请问现在这个版本的工具支持到java的什么版本呢?

lly-ss avatar Apr 21 '23 13:04 lly-ss

谢谢您的回复! 请问现在这个版本的工具支持到java的什么版本呢?

程序本身执行使用的是JDK8,分析jar包和class文件支持JDK1.5及以上的版本

Adrninistrator avatar Apr 21 '23 15:04 Adrninistrator