java-callgraph2
java-callgraph2 copied to clipboard
关于实现关系的 method_call 缺失和错误
使用过程中发现,对于继承关系,如:
public class A {
public void exec() {}
}
public class B extends A {}
jacg_method_call中记录了子类方法对父类方法的调用关系:
B.exec 调用 A.exec
但是对于实现关系,如:
public interface A {
default void exec() {}
}
public class B implements A {}
并没有记录子类方法对接口方法的调用关系。
是否可以添加这类调用关系?
特别地,对于多级实现关系,例如:
public interface A {
default void exec() {}
void test();
}
public interface B extends A {}
public class C implements B {
public void test() {}
}
如果可以增加调用关系的话,首先必定要记录的是:
B.exec 调用 A.exec
至于C,建议记录:
C.exec 调用 B.exec
而不是:
C.exec 调用 A.exec
另外,目前的实现会生成两条调用关系:
B.test 调用 A.test(错误,应当是 A.test 调用 B.test)
B.test 调用 C.test
对于abstract class多级继承是否存在类似的问题,我尚未进行测试。