[Soot-list] Context sensitive analysis introduction?

Helge Jensen helge.jensen at slog.dk
Wed Mar 9 04:33:07 EST 2005


Ondrej Lhotak wrote:

> Soot doesn't really have much of a big picture design for context
> sensitivity.

OK, thanks for the straight answer.

Now, i'm gonna see if I can pump a bit more info out of you :)

Is there any examples/implementations of context-sensitive analysis in 
soot that would be instructive to look at?

> graph. Also, I don't think the s.j.t.c.CallGraph structure is
> necessarily appropriate for context-sensitive call graphs, because they
> may be huge, so some more space-efficient implicit representation may be
> better.

Frankly, I'm not too interested in the implementation right now, I just 
want to get a feel for what possibilities there are, and make that work 
for small programs.

I can't really use the as-is CallGraph anyway, since I need the possible 
call-to's given (unit,context), and only edgesOutOf(Unit) is available.

Is the context-sensitive call-graph you have implemented dependent upon 
paddle?

> Paddle has an internal call graph interface

I wasn't expecting to use paddle, but I'll have a look at it.

Currently my soot knowledge is way too weak to implement a context 
sensitive CallGraph-like analysis.

> If the s.j.t.c.CallGraph interface is appealing to people wanting to
> query context-sensitive call graphs, perhaps at some point, it would be
> worthwhile to make an adapter over the Paddle AbsCallGraph implementing
> the same interface.

Possibly.

Note, that the CallGraph *class* currently maintains state, and provides 
mutator functions too. That would (probably) need to change to allow 
separation of implementation and query.

My needs boils down to an implementation of something as simple as:

interface ContextSensitiveCallGraph {
   MethodAndContext edgesOutOf(Unit u, Context ctx);
   Set validContexts(SootMethod m);
}

-- 
Helge


More information about the Soot-list mailing list