<div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Hi Steven,</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Yes, I am calling on <span style="color:rgb(0,0,0);font-family:Menlo;font-size:9pt">constructCallgraph()</span> SetupApplication. Basically, I am using almost same code as in MainClass except minor changes. Please, have a look at the code and stack trace. </div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"> </div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">This run() being invoked exactly as that exists in FlowDroid original code.</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">------------------------------</div><div class="gmail_default"><pre style="font-family:Menlo;color:rgb(0,0,0);font-size:9pt"><span style="color:rgb(0,0,128);font-weight:bold">private void </span>run(String[] args) <span style="color:rgb(0,0,128);font-weight:bold">throws </span>Exception {<br>    <span style="color:rgb(128,128,128);font-style:italic">// We need proper parameters<br></span><span style="color:rgb(128,128,128);font-style:italic">    </span><span style="color:rgb(0,0,128);font-weight:bold">final </span>HelpFormatter formatter = <span style="color:rgb(0,0,128);font-weight:bold">new </span>HelpFormatter();<br>    <span style="color:rgb(0,0,128);font-weight:bold">if </span>(args.<span style="color:rgb(102,14,122);font-weight:bold">length </span>== <span style="color:rgb(0,0,255)">0</span>) {<br>        formatter.printHelp(<span style="color:rgb(0,128,0);font-weight:bold">"soot-infoflow-cmd [OPTIONS]"</span>, <span style="color:rgb(102,14,122);font-weight:bold">options</span>);<br>        <span style="color:rgb(0,0,128);font-weight:bold">return</span>;<br>    }<br><br>    <span style="color:rgb(128,128,128);font-style:italic">// Parse the command-line parameters<br></span><span style="color:rgb(128,128,128);font-style:italic">    </span>CommandLineParser parser = <span style="color:rgb(0,0,128);font-weight:bold">new </span>DefaultParser();<br>    <span style="color:rgb(0,0,128);font-weight:bold">try </span>{<br>        CommandLine cmd = parser.parse(<span style="color:rgb(102,14,122);font-weight:bold">options</span>, args);<br><br>        <span style="color:rgb(128,128,128);font-style:italic">// Do we need to display the user manual?<br></span><span style="color:rgb(128,128,128);font-style:italic">        </span><span style="color:rgb(0,0,128);font-weight:bold">if </span>(cmd.hasOption(<span style="color:rgb(0,128,0);font-weight:bold">"?"</span>) || cmd.hasOption(<span style="color:rgb(0,128,0);font-weight:bold">"help"</span>)) {<br>            formatter.printHelp(<span style="color:rgb(0,128,0);font-weight:bold">"soot-infoflow-cmd [OPTIONS]"</span>, <span style="color:rgb(102,14,122);font-weight:bold">options</span>);<br>            <span style="color:rgb(0,0,128);font-weight:bold">return</span>;<br>        }<br><br>        <span style="color:rgb(128,128,128);font-style:italic">// Do we have a configuration file?<br></span><span style="color:rgb(128,128,128);font-style:italic">        </span>String configFile = cmd.getOptionValue(<span style="color:rgb(102,14,122);font-weight:bold;font-style:italic">OPTION_CONFIG_FILE</span>);<br>        <span style="color:rgb(0,0,128);font-weight:bold">final </span>InfoflowAndroidConfiguration config = configFile == <span style="color:rgb(0,0,128);font-weight:bold">null </span>|| configFile.isEmpty()<br>                ? <span style="color:rgb(0,0,128);font-weight:bold">new </span>InfoflowAndroidConfiguration() : loadConfigurationFile(configFile);<br>        <span style="color:rgb(0,0,128);font-weight:bold">if </span>(config == <span style="color:rgb(0,0,128);font-weight:bold">null</span>)<br>            <span style="color:rgb(0,0,128);font-weight:bold">return</span>;<br><br>        <span style="color:rgb(128,128,128);font-style:italic">// Parse the other options<br></span><span style="color:rgb(128,128,128);font-style:italic">        </span>parseCommandLineOptions(cmd, config);<br>        config.setSootIntegrationMode(InfoflowAndroidConfiguration.SootIntegrationMode.<span style="color:rgb(102,14,122);font-weight:bold;font-style:italic">CreateNewInstace</span>);<br>        soot.options.Options.<span style="font-style:italic">v</span>().set_allow_phantom_refs(<span style="color:rgb(0,0,128);font-weight:bold">true</span>);<br>        soot.options.Options.<span style="font-style:italic">v</span>().set_output_format(soot.options.Options.<span style="color:rgb(102,14,122);font-weight:bold;font-style:italic">output_format_none</span>);<br>        soot.options.Options.<span style="font-style:italic">v</span>().set_process_dir(Collections.<span style="font-style:italic">singletonList</span>(<span style="color:rgb(0,128,0);font-weight:bold">"apk path"</span>));<br>        soot.options.Options.<span style="font-style:italic">v</span>().set_force_android_jar(<span style="color:rgb(0,128,0);font-weight:bold">"/Users/umarfarooq/Library/Android/sdk/platforms"</span>);<br>        soot.options.Options.<span style="font-style:italic">v</span>().set_src_prec(soot.options.Options.<span style="color:rgb(102,14,122);font-weight:bold;font-style:italic">src_prec_apk_class_jimple</span>);<br>        soot.options.Options.<span style="font-style:italic">v</span>().set_keep_line_number(<span style="color:rgb(0,0,128);font-weight:bold">false</span>);<br>        soot.options.Options.<span style="font-style:italic">v</span>().set_keep_offset(<span style="color:rgb(0,0,128);font-weight:bold">false</span>);<br>        soot.options.Options.<span style="font-style:italic">v</span>().set_throw_analysis(soot.options.Options.<span style="color:rgb(102,14,122);font-weight:bold;font-style:italic">throw_analysis_dalvik</span>);<br>        soot.options.Options.<span style="font-style:italic">v</span>().set_process_multiple_dex(config.getMergeDexFiles());<br>        soot.options.Options.<span style="font-style:italic">v</span>().set_whole_program(<span style="color:rgb(0,0,128);font-weight:bold">true</span>);<br>        IInfoflowConfig sootConfig = <span style="color:rgb(0,0,128);font-weight:bold">new </span>SootConfigForAndroid();<br>        sootConfig.setSootOptions(soot.options.Options.<span style="font-style:italic">v</span>(), config);<br>        <span style="color:rgb(128,128,128);font-style:italic">// Create the data flow analyzer<br></span><span style="color:rgb(128,128,128);font-style:italic">        </span><span style="color:rgb(102,14,122);font-weight:bold">analyzer </span>= <span style="color:rgb(0,0,128);font-weight:bold">new </span>SetupApplication(config);<br>        <span style="color:rgb(102,14,122);font-weight:bold">analyzer</span>.setSootConfig(sootConfig);<br>        <span style="color:rgb(102,14,122);font-weight:bold">analyzer</span>.constructCallgraph();</pre><pre><font color="#000000" style="font-family:Menlo;font-size:9pt"><br></font><span style="font-family:Menlo;font-size:9pt;color:rgb(128,128,128);font-style:italic">        </span><font color="#000000" style="font-family:Menlo;font-size:9pt">ReachableMethods methods = Scene.</font><span style="font-family:Menlo;font-size:9pt;color:rgb(0,0,0);font-style:italic">v</span><font color="#000000" style="font-family:Menlo;font-size:9pt">().getReachableMethods();<br>        System.</font><span style="font-family:Menlo;font-size:9pt;color:rgb(102,14,122);font-weight:bold;font-style:italic">out</span><font color="#000000" style="font-family:Menlo;font-size:9pt">.println(</font><span style="font-family:Menlo;font-size:9pt;color:rgb(0,128,0);font-weight:bold">"Reachable Size: " </span><font color="#000000" style="font-family:Menlo;font-size:9pt">+ methods.size());<br>        QueueReader<MethodOrMethodContext> reader = methods.listener();<br>        </font><span style="font-family:Menlo;font-size:9pt;color:rgb(0,0,128);font-weight:bold">while </span><font face="Menlo" size="2"><font color="#000000">(reader.hasNext()) {<br>            MethodOrMethodContext method = reader.next();<br>            </font><font color="#ff0000">method.method().retrieveActiveBody();    // </font></font><font face="Menlo" color="#ff0000">This</font><font face="Menlo" size="2"><font color="#ff0000"> statement cause exception </font><font color="#000000"><br>            System.</font></font><span style="font-family:Menlo;font-size:9pt;color:rgb(102,14,122);font-weight:bold;font-style:italic">out</span><font color="#000000" style="font-family:Menlo;font-size:9pt">.println(</font><span style="font-family:Menlo;font-size:9pt;color:rgb(0,128,0);font-weight:bold">"Reachable: " </span><font color="#000000" style="font-family:Menlo;font-size:9pt">+ method);<br><br>        }</font></pre><pre style="font-family:Menlo;font-size:9pt"><font color="#000000">     }</font></pre><pre style="font-family:Menlo;font-size:9pt"><font color="#000000"><b>Stack Trace of Exception:</b></font></pre><pre style="font-family:Menlo;font-size:9pt"><font color="#000000"><b>-----------------------------------------------</b></font></pre><pre style="font-family:Menlo;font-size:9pt"><span style="font-family:arial,sans-serif;font-size:small">The data flow analysis has failed. Error message: This operation requires resolving level BODIES but android.support.v7.app.AppCompatActivity is at resolving level SIGNATURES
If you are extending Soot, try to add the following call before calling soot.Main.main(..):
Scene.v().addBasicClass(android.support.v7.app.AppCompatActivity,BODIES);
Otherwise, try whole-program mode (-w).
java.lang.RuntimeException: This operation requires resolving level BODIES but android.support.v7.app.AppCompatActivity is at resolving level SIGNATURES
If you are extending Soot, try to add the following call before calling soot.Main.main(..):</span><font color="#000000"> </font></pre><pre style="font-family:Menlo;font-size:9pt"><font color="#000000">------------------------------------------------</font></pre><pre><font color="#000000" face="arial, helvetica, sans-serif">Thanks,</font></pre><pre><font color="#000000" face="arial, helvetica, sans-serif">Umar</font></pre></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Mar 1, 2018 at 12:45 AM, Arzt, Steven <span dir="ltr"><<a href="mailto:steven.arzt@sit.fraunhofer.de" target="_blank">steven.arzt@sit.fraunhofer.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div lang="DE" link="blue" vlink="purple">
<div class="m_-1862122335172888589WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">Hi Umar,<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">How do you use the FlowDroid API? Do you call constructCallgraph() on SetupApplication? Which options do you set in the
 InfoflowAndroidConfiguration object? What is the stack trace of the exception? I need your code, not what is in FlowDroid. There are many ways to configure FlowDroid, so it’s hard to tell anything without knowing how you use the API.<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">Best regards,<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">  Steven<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif"> Umar Farooq [mailto:<a href="mailto:ufaro001@ucr.edu" target="_blank">ufaro001@ucr.edu</a>]
<br>
<b>Sent:</b> Thursday, March 1, 2018 1:37 AM<br>
<b>To:</b> Arzt, Steven <<a href="mailto:steven.arzt@sit.fraunhofer.de" target="_blank">steven.arzt@sit.fraunhofer.de</a><wbr>><br>
<b>Cc:</b> <a href="mailto:soot-list@cs.mcgill.ca" target="_blank">soot-list@cs.mcgill.ca</a><br>
<b>Subject:</b> Re: [Soot-list] [Soot][FlowDroid] Running FlowDroid in whole-program mode (-w)<u></u><u></u></span></p><div><div class="h5">
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:9.5pt;font-family:"Arial",sans-serif">Hello Steven, <u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:9.5pt;font-family:"Arial",sans-serif"><u></u> <u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:9.5pt;font-family:"Arial",sans-serif">I am using FlowDroid API, The "SetupApplication" class has method "</span><span style="font-size:9.0pt;font-family:"Menlo",serif;color:black">initializeSoot"</span><span style="font-size:9.5pt;font-family:"Arial",sans-serif"> that
 is responsible to initialize soot, I have tried to set the flag for whole program but it seems it is not working. Please, see the code below.<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:9.5pt;font-family:"Arial",sans-serif"> <u></u><u></u></span></p>
</div>
<div>
<pre><span style="color:black">private </span><b><span style="color:maroon">void</span></b><span style="color:black"> initializeSoot</span><span style="color:#808030">(</span><span style="color:black">boolean constructCallgraph</span><span style="color:#808030">)</span><span style="color:black"> </span><span style="color:purple">{</span><span style="color:black"><u></u><u></u></span></pre>
<pre><span style="color:black">        logger</span><span style="color:#808030">.</span><span style="color:black">info</span><span style="color:#808030">(</span><span style="color:maroon">"</span><span style="color:#0000e6">Initializing Soot...</span><span style="color:maroon">"</span><span style="color:#808030">)</span><span style="color:purple">;</span><span style="color:black"><u></u><u></u></span></pre>
<pre><span style="color:black"><u></u> <u></u></span></pre>
<pre><span style="color:black">        final </span><span style="color:#603000">String</span><span style="color:black"> androidJar </span><span style="color:#808030">=</span><span style="color:black"> config</span><span style="color:#808030">.</span><span style="color:black">getAnalysisFileConfig</span><span style="color:#808030">()<wbr>.</span><span style="color:black">getAndroidPlatformDir</span><span style="color:#808030">()</span><span style="color:purple">;</span><span style="color:black"><u></u><u></u></span></pre>
<pre><span style="color:black">        final </span><span style="color:#603000">String</span><span style="color:black"> apkFileLocation </span><span style="color:#808030">=</span><span style="color:black"> config</span><span style="color:#808030">.</span><span style="color:black">getAnalysisFileConfig</span><span style="color:#808030">()<wbr>.</span><span style="color:black">getTargetAPKFile</span><span style="color:#808030">()</span><span style="color:purple">;</span><span style="color:black"><u></u><u></u></span></pre>
<pre><span style="color:black"><u></u> <u></u></span></pre>
<pre><span style="color:black">        </span><span style="color:dimgray">// Clean up any old Soot instance we may have</span><span style="color:black"><u></u><u></u></span></pre>
<pre><span style="color:black">        G</span><span style="color:#808030">.</span><span style="color:black">reset</span><span style="color:#808030">()</span><span style="color:purple">;</span><span style="color:black"><u></u><u></u></span></pre>
<pre><span style="color:black"><u></u> <u></u></span></pre>
<pre><span style="color:black">        Options</span><span style="color:#808030">.</span><span style="color:black">v</span><span style="color:#808030">().</span><span style="color:black">set_no_bodies_for_<wbr>excluded</span><span style="color:#808030">(</span><span style="color:black">true</span><span style="color:#808030">)</span><span style="color:purple">;</span><span style="color:black"><u></u><u></u></span></pre>
<pre><span style="color:black">        Options</span><span style="color:#808030">.</span><span style="color:black">v</span><span style="color:#808030">().</span><span style="color:black">set_allow_phantom_<wbr>refs</span><span style="color:#808030">(</span><span style="color:black">true</span><span style="color:#808030">)</span><span style="color:purple">;</span><span style="color:black"><u></u><u></u></span></pre>
<pre><span style="color:black">        </span><b><span style="color:maroon">if</span></b><span style="color:black"> </span><span style="color:#808030">(</span><span style="color:black">config</span><span style="color:#808030">.</span><span style="color:black">getWriteOutputFiles</span><span style="color:#808030">())</span><span style="color:black"><u></u><u></u></span></pre>
<pre><span style="color:black">            Options</span><span style="color:#808030">.</span><span style="color:black">v</span><span style="color:#808030">().</span><span style="color:black">set_output_format</span><span style="color:#808030">(</span><span style="color:black"><wbr>Options</span><span style="color:#808030">.</span><span style="color:black">output_format_jimple</span><span style="color:#808030">)</span><span style="color:purple">;</span><span style="color:black"><u></u><u></u></span></pre>
<pre><span style="color:black">        </span><b><span style="color:maroon">else</span></b><span style="color:black"><u></u><u></u></span></pre>
<pre><span style="color:black">            Options</span><span style="color:#808030">.</span><span style="color:black">v</span><span style="color:#808030">().</span><span style="color:black">set_output_format</span><span style="color:#808030">(</span><span style="color:black"><wbr>Options</span><span style="color:#808030">.</span><span style="color:black">output_format_none</span><span style="color:#808030">)</span><span style="color:purple">;</span><span style="color:black"><u></u><u></u></span></pre>
<pre><span style="color:black">        Options</span><span style="color:#808030">.</span><span style="color:black">v</span><span style="color:#808030">().</span><span style="color:black">set_whole_program</span><span style="color:#808030">(</span><span style="color:black"><wbr>constructCallgraph</span><span style="color:#808030">)</span><span style="color:purple">;</span><span style="color:black"><u></u><u></u></span></pre>
<pre><span style="color:black">        Options</span><span style="color:#808030">.</span><span style="color:black">v</span><span style="color:#808030">().</span><span style="color:black">set_process_dir</span><span style="color:#808030">(</span><span style="color:black">Co<wbr>llections</span><span style="color:#808030">.</span><span style="color:black">singletonList</span><span style="color:#808030">(</span><span style="color:black">apkFil<wbr>eLocation</span><span style="color:#808030">))</span><span style="color:purple">;</span><span style="color:black"><u></u><u></u></span></pre>
<pre><span style="color:black">        </span><b><span style="color:maroon">if</span></b><span style="color:black"> </span><span style="color:#808030">(</span><span style="color:black">forceAndroidJar</span><span style="color:#808030">)</span><span style="color:black"><u></u><u></u></span></pre>
<pre><span style="color:black">            Options</span><span style="color:#808030">.</span><span style="color:black">v</span><span style="color:#808030">().</span><span style="color:black">set_force_android_<wbr>jar</span><span style="color:#808030">(</span><span style="color:black">androidJar</span><span style="color:#808030">)</span><span style="color:purple">;</span><span style="color:black"><u></u><u></u></span></pre>
<pre><span style="color:black">        </span><b><span style="color:maroon">else</span></b><span style="color:black"><u></u><u></u></span></pre>
<pre><span style="color:black">            Options</span><span style="color:#808030">.</span><span style="color:black">v</span><span style="color:#808030">().</span><span style="color:black">set_android_jars</span><span style="color:#808030">(</span><span style="color:black">a<wbr>ndroidJar</span><span style="color:#808030">)</span><span style="color:purple">;</span><span style="color:black"><u></u><u></u></span></pre>
<pre><span style="color:black">        Options</span><span style="color:#808030">.</span><span style="color:black">v</span><span style="color:#808030">().</span><span style="color:black">set_src_prec</span><span style="color:#808030">(</span><span style="color:black">Optio<wbr>ns</span><span style="color:#808030">.</span><span style="color:black">src_prec_apk_class_jimple</span><span style="color:#808030">)</span><span style="color:purple">;</span><span style="color:black"><u></u><u></u></span></pre>
<pre><span style="color:black">        Options</span><span style="color:#808030">.</span><span style="color:black">v</span><span style="color:#808030">().</span><span style="color:black">set_keep_line_<wbr>number</span><span style="color:#808030">(</span><span style="color:black">false</span><span style="color:#808030">)</span><span style="color:purple">;</span><span style="color:black"><u></u><u></u></span></pre>
<pre><span style="color:black">        Options</span><span style="color:#808030">.</span><span style="color:black">v</span><span style="color:#808030">().</span><span style="color:black">set_keep_offset</span><span style="color:#808030">(</span><span style="color:black">fa<wbr>lse</span><span style="color:#808030">)</span><span style="color:purple">;</span><span style="color:black"><u></u><u></u></span></pre>
<pre><span style="color:black">        Options</span><span style="color:#808030">.</span><span style="color:black">v</span><span style="color:#808030">().</span><span style="color:black">set_throw_analysis</span><span style="color:#808030"><wbr>(</span><span style="color:black">Options</span><span style="color:#808030">.</span><span style="color:black">throw_analysis_dalvik</span><span style="color:#808030"><wbr>)</span><span style="color:purple">;</span><span style="color:black"><u></u><u></u></span></pre>
<pre><span style="color:black">        Options</span><span style="color:#808030">.</span><span style="color:black">v</span><span style="color:#808030">().</span><span style="color:black">set_process_<wbr>multiple_dex</span><span style="color:#808030">(</span><span style="color:black">config</span><span style="color:#808030">.</span><span style="color:black">getMergeDe<wbr>xFiles</span><span style="color:#808030">())</span><span style="color:purple">;</span><span style="color:black"><u></u><u></u></span></pre>
<pre><span style="color:black">        <b>Options</b></span><b><span style="color:#808030">.</span><span style="color:black">v</span><span style="color:#808030">().</span><span style="color:black">set_whole_program</span><span style="color:#808030">(</span><span style="color:black"><wbr>true</span><span style="color:#808030">)</span><span style="color:purple">;</span></b><span style="color:black"><u></u><u></u></span></pre>
<pre><span style="color:black">        System</span><span style="color:#808030">.</span><span style="color:black">out</span><span style="color:#808030">.</span><span style="color:black">println</span><span style="color:#808030">(</span><span style="color:maroon">"</span><span style="color:#0000e6">Soot Initialization called</span><span style="color:maroon">"</span><span style="color:#808030">)</span><span style="color:purple">;</span><span style="color:black"><u></u><u></u></span></pre>
</div>
<div>
<p class="MsoNormal"><span style="font-size:9.5pt;font-family:"Arial",sans-serif"><u></u> <u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:9.5pt;font-family:"Arial",sans-serif">Thanks,<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:9.5pt;font-family:"Arial",sans-serif">Umar<u></u><u></u></span></p>
</div>
</div>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<p class="MsoNormal">On Wed, Feb 28, 2018 at 11:58 AM, Umar Farooq <<a href="mailto:ufaro001@ucr.edu" target="_blank">ufaro001@ucr.edu</a>> wrote:<u></u><u></u></p>
<blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif">Hello Steven, <u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif"><u></u> <u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif">I am using FlowDroid API, The "SetupApplication" class has method "</span><span style="font-size:9.0pt;font-family:"Menlo",serif;color:black">initializeSoot"</span><span style="font-family:"Arial",sans-serif"> that
 is responsible to initialize soot, I have tried to set the flag for whole program but it seems it is not working. Please, see my code in attachment. <u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif"><u></u> <u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif">Thanks,<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif">Umar<u></u><u></u></span></p>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<p class="MsoNormal">On Wed, Feb 28, 2018 at 1:48 AM, Arzt, Steven <<a href="mailto:steven.arzt@sit.fraunhofer.de" target="_blank">steven.arzt@sit.fraunhofer.de</a><wbr>> wrote:<u></u><u></u></p>
<blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">Hi Umar,</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"> </span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">How do you attempt to run FlowDroid? Do you use the FlowDroid API or the command-line
 program? Please show your command line or your code with which you invoke FlowDroid.</span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"> </span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">Best regards,</span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">  Steven</span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"> </span><u></u><u></u></p>
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif"> Soot-list
 [mailto:<a href="mailto:soot-list-bounces@cs.mcgill.ca" target="_blank">soot-list-bounces@cs.<wbr>mcgill.ca</a>]
<b>On Behalf Of </b>Umar Farooq<br>
<b>Sent:</b> Wednesday, February 28, 2018 2:33 AM<br>
<b>To:</b> <a href="mailto:soot-list@cs.mcgill.ca" target="_blank">soot-list@cs.mcgill.ca</a><br>
<b>Subject:</b> [Soot-list] [Soot][FlowDroid] Running FlowDroid in whole-program mode (-w)</span><u></u><u></u></p>
<div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
<div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif">Hi All,</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif"> </span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif">I want to run FlowDroid in whole program mode, I have tried to call "</span><span style="font-size:9.0pt;font-family:"Menlo",serif;color:black">soot.options.Options.<i>v</i>().set_<wbr>whole_program(</span><b><span style="font-size:9.0pt;font-family:"Menlo",serif;color:navy">true</span></b><span style="font-size:9.0pt;font-family:"Menlo",serif;color:black">);"</span><span style="font-family:"Arial",sans-serif"> it
 can work for soot but not for FlowDroid. I need to load all the bodies level classes but I am getting this message. </span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif"> </span><u></u><u></u></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif">"The data flow analysis has failed. Error message: This operation requires resolving level BODIES but android.support.v7.app.<wbr>AppCompatActivity
 is at resolving level SIGNATURES</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif">If you are extending Soot, try to add the following call before calling soot.Main.main(..):</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif">Scene.v().addBasicClass(<wbr>android.support.v7.app.<wbr>AppCompatActivity,BODIES);</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif">Otherwise, try whole-program mode (-w)."</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif"> </span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif"> </span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif">Thanks,</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif">Umar</span><u></u><u></u></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div></div></div>
</div>

</blockquote></div><br></div>