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

您好,请问method_call中为什么没有<clinit>()?

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

如果一个函数调用了另一个类的静态field,method_call.txt中没有显示这种调用关系吗?

lly-ss avatar May 08 '23 03:05 lly-ss

方法的调用不会出现在method_call表里

方法调用的被调用对象,或者被调用参数涉及到类的静态字段时,相关信息会保存在method_call_info表中,通过call_id字段关联到method_call

但是对于String之类的类型,这些在class文件里是常量的形式,不会有静态字段形式存在

Adrninistrator avatar May 08 '23 03:05 Adrninistrator

所以如果某个函数调用了另一个类的静态字段,这种有()的调用关系需要在哪个txt文件里找呢?

lly-ss avatar May 08 '23 05:05 lly-ss

方法的调用不会出现在method_call表里

方法调用的被调用对象,或者被调用参数涉及到类的静态字段时,相关信息会保存在method_call_info表中,通过call_id字段关联到method_call

但是对于String之类的类型,这些在class文件里是常量的形式,不会有静态字段形式存在

对应的txt文件是method_call_info.txt

Adrninistrator avatar May 08 '23 06:05 Adrninistrator

作者您好,我看了sql表后还是对这几个txt文件搞不太清除,您可以解释一下method_call_info.txt,method_info.txt,method_arg_generics_type.txt,method_call.txt和method_return_generics_type.txt这几个文件存储的是一些什么信息吗? 感激不尽!

lly-ss avatar May 08 '23 07:05 lly-ss

  • method_info

方法的信息,完整方法及access_flags、返回类型等

  • method_info

方法调用,调用方法和被调用方法的信息

  • method_call_info

方法调用中,被调用对象和参数涉及的可能的值和类型

  • method_arg_generics_type

方法的参数中涉及的泛型中的类型,比如List<String>

  • method_return_generics_type

方法的返回类型中涉及的泛型中的类型,比如List<String>

可以参考sql文件中的COMMENT

Adrninistrator avatar May 08 '23 07:05 Adrninistrator