[Soot-list] Adding multiples of the same edge

Jason Ott jott002 at ucr.edu
Mon May 18 17:45:22 EDT 2015


My tests suggest that when I add multiple entry points that have
overlapping edges, that those edges are not added multiple times.  I just
want to confirm that.

Ultimately I experiencing a bizarre problem where I create many files with
many entry points.  Each of those files instantiates a particular object.
Also in that file is a list of all public methods that we want included in
the call graph.

I then dump that into soot for Spark to generate the call graph.  However,
there are edges that are missing.  I have found one instance where I have,
in one of my files, several methods that are not even referenced in the
graph.  I'm not sure why they aren't there.

To give an example I have a few files:

fileone.java:
public class fileone {
public static void main(String[] args) {
    CustomObject co = new CustomObject();

    co.doone();
    co.dotwo();
    co.dothree();
}
}

filetwo.java:
public class filetwo {
public static void main(String[] args) {
    DiffObj do = new DiffObj();

    do.doit();
    do.do();
    do.stop();
}

Then for spark for each file, I add each class and their entry point:
//...
for(file f : folder) {
    sootClass = Scene.v().forceResolve(f.className, SootClass.BODIES);
    sootClass.setApplicationClass();
    entrypoints.add(sootCalss.getMethodByName(f.method));// always resolves
to "main"
}
Scene.v().loadNecessaryClasses();
Scene.v().setEntryPoints(entryPoints);
PackManager.v().runPacks();

callGraph = Scene.v().getCallGraph();
//...

Obviously this part is shortened for brevity.  As of right now, do.doit()
and do.do() are not present in the call graph.  I don't fully understand
why this is the case.  Any help would be greatly appreciated.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://mailman.CS.McGill.CA/pipermail/soot-list/attachments/20150518/97991bd2/attachment.html 


More information about the Soot-list mailing list