<div dir="ltr"><div><div><div><div><div><div>Hi,<br><br></div>Is there any way to instruct Soot to take all the classes under certain path as application classes?<br><br></div>For the following simple program, once I analyze it using CHA and filter methods from third-party libraries out of the call graph, I get only one method left (i.e. T.main).<br><br>class A { @Override public String toString(){ return ""; } }<br>public class T { public static void main(String[] args){ new Object().toString(); } }<br><br></div>But when I analyze the next program, I get the expected results (i.e. after filtering out all other methods, the set of methods in the call graph are T.main, A.<init> and A.toString).<br><br>class A { @Override public String toString(){ return ""; } }<br>public class T { public static void main(String[] args){ A a = new A(); new Object().toString(); } }<br><br></div><div>This is how CHA works...<br></div><div><br></div>It seems that when we just name the main class in the command-line, Soot ignores all the other classes in the class path. As soon as I name the second class A in the command-line I get the expected result.<br><br></div>Could you please tell me if there is any easy way to instruct Soot that all the classes under certain path are application classes? As you know for a big program such as Apache Commons Lang, it would be impossible to name all the application classes (even writing a program to extract all the class files under a directory does not seem a good idea, as there should be a mechanism built in Soot for this purpose)<br><br></div>Thank you so much.<br></div>