Hi,
I am evaluating chord as a back-end which could be potentially used for symbolic execution of java program. I cannot find any information regarding this topic on the web, so maybe somebody on this group have similar interests ?
Have anybody tried to put as input some method and get as an output a call graph with constraint on (methods arguments/object states) which fulfill circumstances necessary to reach every branch ?
For example, simple case :
public static void someMethod(SomeObject object, Object someValue){
if( object == null ){
throw new IllegalArgumentException();
}
if( object.callSomeMethod().contains(someValue) ){
callAnotherMethod();
}
AnotherObject another = object.getSome();
if( another.shouldCallSth() ){
callSth();
}
}
for this case I would like either :
- at any branching point (in this case - on an "if" instruction) get the constraints on objects involved of fulfill conditions on the branching point (positive and negative)
- at every endpoint (return statement or throw point) get conditions on all objects which are necessary to reach that point
I new at this topic, I know that something similar does JavaPathFinder/SymbolicPathFinder, but I like to have several tools to evaluate.
Has anybody experience/idea if it is possible (or exists some symbolic execution plugin for chord) ?
Thanks in advance,
Grzesiek