<div dir="ltr"><div><div><div><div><div><div>Hello!<br><br></div>I&#39;m trying to use Soot
 for an interprocedural analysis but I&#39;m having trouble getting a 
callgraph. I&#39;m analyzing a web application that depends on several 
libraries, each of which have their own dependencies. These dependencies
 aren&#39;t interesting to my analysis but without them I can&#39;t seem to get a
 reliable call-graph.<br><br></div>I&#39;m invoking Soot as follows:<br><br></div>java -cp ./soot-trunk.jar:./myanalysis -pp -soot-class-path /path/to/application/classes:/paths/to/app/library/jars
 -no-bodies-for-excluded -x &#39;freemarker&#39; -w -p cg.cha enabled:false -p 
cg.spark enabled:true,verbose:true -p wjtp.myanalysis on 
com.acme.DummyMain -allow-phantom-refs<br><br></div><div>where 
freemarker is the package name of the library I&#39;m not interested in (I 
exclude the freemarker.jar from the soot class path in the above 
invocation too)[<br></div><div><br></div>With these options Spark builds
 a callgraph, but the results are strange. For instance, the possible 
types analysis dies because (as far I as can tell) it thinks that a call
 to &lt;java.security.AccessController: java.lang.Object doPrivileged(java.security.PrivilegedAction)&gt;<br></div>potentially resolves to &lt;org.apache.commons.logging.LogFactory$1: java.lang.Object run()&gt;.<br><br></div><div>Without
 the -no-bodies-for-excluded option Spark churns for a while until it 
reaches some part of the Freemarker library that relies on Jython. 
However, the Jython jar also has unmet dependencies which cause Spark to
 choke...<br><br></div><div>In short: how do I configure Soot to ignore missing/uninteresting library calls with the least effort possible?<br><br></div>Thanks!</div>