<div dir="ltr">Hi,<div><br></div><div>I&#39;m using soot.jimple.toolkits.ide.exampleproblems.IFDSReachingDefinitions but I&#39;m only getting intraprocedural reaching definitions. For example, against the following code:</div><div><br></div><div><div><div>public class ChpkimClass {</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>static int mystaticfield = -2;<span class="Apple-tab-span" style="white-space:pre">        </span></div><div><br></div><div>        public static void foo(int x){}</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>public static void main(String args[]){</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>foo(mystaticfield);</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div>}</div></div><div><br></div></div><div>At foo(), the only reaching definition is args[]. Since the call graph includes the edge from main to clinit, whose active body includes the statement &lt;mypackage.ChpkimClass: int mystaticfield&gt; = -2, shouldn&#39;t this statement also be included in the resulting map?</div><div><br></div><div>Also, when the analysis given an instance field or array reference, the reaching definitions seem to be empty. Am I not using the analysis correctly or do I have to construct the reaching definitions manually in these cases?</div><div><br></div><div>I&#39;m using the analysis using the following code:</div><div><br></div><div><div>IFDSReachingDefinitions problem = new IFDSReachingDefinitions(iCfg);<span class="Apple-tab-span" style="white-space:pre">                </span></div><div>solver = new IFDSSolver&lt;Unit, Pair&lt;Value, Set&lt;DefinitionStmt&gt;&gt;, </div><div>     SootMethod, InterproceduralCFG&lt;Unit, SootMethod&gt;&gt;(problem);</div><div>solver.solve();</div></div><div>Map result = solver.resultsAt(unit);<br></div><div><br></div><div>Thank you for your help.</div></div>