我需要在運行時分析java方法主體。 javassist提供了很多方法來幫助我做到這一點。但現在我需要知道給定的方法是否包含語句或循環。我怎樣才能做到這一點?如何在使用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
。但沒有發現這樣的事情。
你能舉一個例子來解釋asm如何查找if語句嗎? – Qoros
嘗試結帳此鏈接https://stackoverflow.com/questions/37066812/selecting-and-modifying-if-statement-with-asm – rakwaht