[Soot-list] couldn't find class: SableJBDD.bdd.JBddVariable

Eric Bodden eric.bodden at ec-spride.de
Wed Jan 4 10:51:35 EST 2012


Hi again.

> Anyway, I would like to process all the classes in a directory and obtain
> call graph information for each class. The classes do not have a main method
> and do not always reference each other either. The processing order is also
> not important for my purpose. All I want at the end is a list of
> caller/callee information in
> "caller_class.method() may call called_class.calledMethod()" format.

Ok, now I see. Do you require that method calls be de-virtualized? In
other words, for a call such as...

List l = new ArrayList();
l.clear();

... would it be ok if you just saw a call to List.clear() or would you
need to know that it is a call to ArrayList.clear()?

If the former suffices then you can actually go without a call graph
and just look at the individual method calls. In general, a call graph
does not really seem what you want in your setting, as it is really a
whole-program notion, and you have no such whole program.

> It does exactly what I want but needs in soot.Main call arguments a
> main-class with a main method as well as argument classes. However, I do not
> have a main class in my directory with a main method. I just want to process
> all the classes one by one.
>
> In an attempt to achieve that I extended the soot.Main arguments list in the
> code and added the process-dir option, leaving the option -w as already was
> there.
> But it is not doing what I want.

As I wrote, the code does not really do what you want. It assumes a
whole program, starting at a main method, which is fundamentally
different from your case.

> How can I call soot so that it reads all the classes from a directory?

-process-dir is the right option there. But you need to disable -w,
which will also mean that you cannot use the call graph construction.

Hope that helps,
Eric


More information about the Soot-list mailing list