<div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">Hello,<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">My issue is resolved.</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">Thank you.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Dec 15, 2019 at 4:12 PM Dhriti Khanna <<a href="mailto:dhritik@iiitd.ac.in">dhritik@iiitd.ac.in</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">Hello,</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">For method A, I want to find all the methods that A might invoke in a Java class. I am implementing this as follows:</div><div class="gmail_default"><font face="monospace" size="1"><br></font></div><div class="gmail_default"><font face="monospace" size="1">  List<String> argsList = new ArrayList<String>(Arrays.asList(_cut));<br>  argsList.addAll(Arrays.asList(new String[]{<br>          "-w",<br>          "-main-class",<br>          _cut<br>  }));<br><br>  Options.v().set_no_bodies_for_excluded(true);<br>  Options.v().set_output_format(Options.output_format_jimple);<br>  Options.v().set_output_dir("/home/dhriti/Dropbox/new-workspace/EscapeAnalysis/sootOutput");<br>                  Options.v().setPhaseOption("cg.spark", "on");<br>            Options.v().set_whole_program(true);<br>                 Options.v().set_prepend_classpath(true);<br>             Options.v().set_allow_phantom_refs(true);<br>            Scene.v().addBasicClass("sun.misc.ClassFileTransformer", SootClass.HIERARCHY);<br>             Scene.v().addBasicClass("java.io.ObjectStreamClass$MemberSignature", SootClass.HIERARCHY);<br>                 SootClass sootClass = Scene.v().forceResolve(_cut, SootClass.BODIES);<br>                sootClass.setApplicationClass();<br>             Scene.v().loadNecessaryClasses();<br>  PackManager.v().getPack("wjtp").add(new Transform("wjtp.myTrans", new SceneTransformer() {<br>                      <br>    @Override<br>    protected void internalTransform(String arg0, Map arg1) {<br>    Iterator<SootMethod> sootMethodsIt = sootClass.getMethods().iterator();<br>    while(sootMethodsIt.hasNext()) {<br>                                        <br>        SootMethod caller = sootMethodsIt.next();<br>        if(caller.isPublic() && caller.getDeclaringClass().getName().equals(_cut)) {<br>           <font color="#ff9900"> List<SootMethod> entryPoints = new ArrayList<SootMethod>();<br>            entryPoints.add(caller);<br>            Scene.v().setEntryPoints(entryPoints);<br></font>                                                       <br>            CallGraph cg = Scene.v().getCallGraph();<br>            Iterator<Edge> edges = cg.edgesOutOf(caller);<br>            ArrayList<SootMethod> targets = new ArrayList<SootMethod>();<br>            while(edges.hasNext()) {<br>                Edge edge = edges.next();<br>                SootMethod target = edge.getTgt().method();<br>                if(target.getDeclaringClass().getName().equals(_cut)) {<br>                    targets.add(target);<br>                }<br>            }<br>            targetMethods_For_Method.put(caller, targets); // List of targets can be empty<br>        }<br>    }<br>    }</font></div><div class="gmail_default"><font face="monospace" size="1">  }));<br><br>String[] argsArray = (String[]) argsList.toArray(new String[argsList.size()]);<br>soot.Main.main(argsArray);</font><br></div><div class="gmail_default"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">However, I am not getting the required output unless I call anyone method of the class from the main method. If I do this, then the output is fine. Otherwise, if I leave the main method empty, the target list for each method is empty. Why is this happening even when I set the entry point to be a non-main method (as highlighted in the color yellow above)? </div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">Note: This is an issue with Soot-2.5.0</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div>-- <br><div dir="ltr"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><font size="1" color="#9900ff" face="arial, helvetica, sans-serif">Regards</font><div><font size="1" color="#9900ff" face="arial, helvetica, sans-serif">Dhriti Khanna</font></div><div><font size="1" color="#9900ff" face="arial, helvetica, sans-serif">PhD Scholar</font></div><div><font size="1" color="#9900ff" face="arial, helvetica, sans-serif">IIIT Delhi</font></div></div></div></div></div></div></div></div></div></div></div></div></div></div>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><font size="1" color="#9900ff" face="arial, helvetica, sans-serif">Regards</font><div><font size="1" color="#9900ff" face="arial, helvetica, sans-serif">Dhriti Khanna</font></div><div><font size="1" color="#9900ff" face="arial, helvetica, sans-serif">PhD Scholar</font></div><div><font size="1" color="#9900ff" face="arial, helvetica, sans-serif">IIIT Delhi</font></div></div></div></div></div></div></div></div></div></div></div></div></div>