Я пытаюсь использовать API дерева байт-кода ASM для статического анализа кода Java.У меня есть ClassNode cn, MethodNode m и список инструкций в этом методе, скажем, список InsnList.
Предположим, для данной инструкции (т.е. AbstractInsnNode) s мне нужно найти все определения / назначения переменной вs в приведенном выше списке инструкций.Для большей ясности предположим, что переменная var определена и инициализирована в строке 2, затем ей присвоено какое-то другое значение в строке № 8, а затем используется в строке № 12. В данном случае строка № 12 - это моя s.Кроме того, предположим, что между строками находится много условного кода.
Возможно ли это сделать с помощью 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) модифицируется или присваивается в любом месте приведенного выше кода.Проще говоря, просто переменные-члены (без статической функции или делегирования функции другого класса).