[Soot-list] Soot does not get line numbers of source code
Amit
ciphermaker99 at gmail.com
Sun Oct 28 05:15:44 EDT 2012
I have some .java files that I want to do DFA on. The problem is that soot
sometime cannot get the line numbers.
Here is how I invoke soot (scala code)
soot.G.reset();
PackManager.v().getPack("jap").add(new Transform("jap.myTransform",
TrapBodyTransformer));
PhaseOptions.v().setPhaseOption("tag.ln", "on");
Options.v.set_process_dir(List(inputDir));
Options.v.set_output_dir(outputDir);
Options.v.set_output_format(Options.output_format_jimple);
Options.v.set_allow_phantom_refs(true);
Options.v.set_src_prec(Options.src_prec_java);
Options.v.set_whole_program(false);
Options.v.set_exclude(List("java","sun", "java.lang"));
Options.v.set_keep_line_number(true);
Options.v.set_soot_classpath(inputDir+"c:\\lib\\mongodb\\mongo-2.7.3.jar");
Options.v.set_prepend_classpath(true);
Options.v.setPhaseOption("jb", "use-original-names:true");
Options.v.set_no_bodies_for_excluded(true);
Scene.v().loadNecessaryClasses();
PackManager.v().runPacks();
PackManager.v().writeOutput();
Here is how I try to read line numbers:
import soot.{Unit => JimpleCode}
def getLine(code:JimpleCode) =
code.getTag("SourceLnPosTag").asInstanceOf[SourceLnPosTag].startLn
However, this works in certain cases and in others it gives a null pointer
exception. Generally the problem comes when the line contains an invoke
expression calling an external jar
Would be great to see a solution.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.cs.mcgill.ca/pipermail/soot-list/attachments/20121028/87d46bc9/attachment.html
More information about the Soot-list
mailing list