런타임시 Java 메서드 본문을 분석해야합니다. javassist는 이것을 도와주는 많은 메소드를 제공합니다. 하지만 이제는 주어진 메소드에 if 문이나 루프가 있는지 알아야합니다. 나는 어떻게 이것을 얻을 수 있습니까?javassist를 사용하여 java 메서드에서 if 문을 찾는 방법
대부분의 질문은
method.instrument(new ExprEditor() {
@Override
public void edit(MethodCall m) {
// do some checks
}
});
를 사용하여 대답하지만, 지점 또는 루프에 대한 편집-방법이 없다 할 수있다. 지금까지 시도하는 것 :
for (CodeIterator ci = method.getMethodInfo().getCodeAttribute().iterator(); ci.hasNext();) {
int op = ci.next();
System.out.println(Mnemonic.OPCODE[op]);
}
이
if_*
또는
goto
일부를 찾을 희망. 그러나 이와 같은 것을 찾지 못했습니다.
if 문에서 if 문을 찾는 방법을 설명 할 수 있습니까? – Qoros
이 링크를 체크 아웃하십시오. https://stackoverflow.com/questions/37066812/selecting-and-modifying-if-statement-with-asm – rakwaht