Статический анализ делаю на файлы классов по саже.Я должен получить заявления в попытке и поймать блок отдельно.Я использую следующий код для получения succs обработчика исключений:
private static void test(SootMethod method){
JimpleBody b = (JimpleBody) method.retrieveActiveBody();
Chain<Trap> trapChain = b.getTraps();
ExceptionalUnitGraph g = new ExceptionalUnitGraph(b);
Iterator<Unit> unitIter = g.iterator();
while (unitIter.hasNext()) {
Unit u = unitIter.next();
Iterator<Trap> trapIter = trapChain.iterator();
while(trapIter.hasNext()){
Trap trap = trapIter.next();
if(u.equals(trap.getHandlerUnit())){
System.out.println("excep: "+ u.toString());
List<Unit> list = g.getExceptionalSuccsOf(u);
for(int i = 0;i<list.size();i++){
System.out.println("Succs: "+list.get(i));
}
break;
}
}
}
}
Однако результат содержит только запись блока catch, например: e = $r6
, так как получить все операторы в блоке catch?