Describe the bug
Hi, I found a code example which can help improving Soot. See the minimized code example below.
The inconsistency is the call graph edge from A.foo() to B.foo(). When the method A.bar() is commented out, this edge is not reported, however, when this method is uncommented, this edge will appear in the results.
Actually, the method A.bar() definitely should not affect this call edge. So, I think this is an inconsistency bug.
Input file
public class A extends B {
protected String bar() {
return "";
}
@Override
public boolean foo() {
return super.foo();
}
}
abstract class B {
public boolean foo() {
return true;
}
}
To reproduce
I use the following code to setup and generate the call graph via RTA algorithm:
Describe the bug Hi, I found a code example which can help improving Soot. See the minimized code example below.
The inconsistency is the call graph edge from
A.foo()
toB.foo()
. When the methodA.bar()
is commented out, this edge is not reported, however, when this method is uncommented, this edge will appear in the results.Actually, the method
A.bar()
definitely should not affect this call edge. So, I think this is an inconsistency bug. Input fileTo reproduce I use the following code to setup and generate the call graph via RTA algorithm:
My Soot version is 4.5.0.