Javaコードの静的分析にASMバイトコードツリーAPIを使用しようとしています。私はClassNodecn、MethodNode mを持っており、そのメソッドの命令のリストはInsnListlistと言っています。
与えられた命令(つまりAbstractInsnNode)について、上記の命令リストのsにある変数のすべての定義/割り当てを見つける必要があるとします。より明確にするために、変数varが2行目で定義および初期化され、8行目で他の値が割り当てられ、12行目で使用されているとします。この場合、12行目が私のです。また、その間の行に多くの条件付きコードがあると想定します。
これはASMで可能ですか?どのように??
よろしく、SJ
明確にするために、
public void funcToAnalyze(String k, SomeClass v) {
int numIter = 0;
/*
Do cool stuff here.... modifies member variables and passed params too
*/
if (v.rank > 1 || numIter>200) {
magicFunction(k, 1);
}
}
ここで、条件付きがJumpInsnNode(現在の命令)であり、条件内の変数(この場合はv.rankとnumIter)のいずれかが上記のコードのどこかで変更または割り当てられているかどうか(およびどこで)を見つける必要があるとします。単純にしてください。メンバー変数だけです(静的関数や別のクラスの関数への委任はありません)。