程序包 cn.taketoday.bytecode.tree.analysis
package cn.taketoday.bytecode.tree.analysis
Provides a framework for static code analysis based on the asm.tree package.
Basic usage:
ClassReader classReader = new ClassReader(bytecode);
ClassNode classNode = new ClassNode();
classReader.accept(classNode, ClassReader.SKIP_DEBUG);
for (MethodNode method : classNode.methods) {
if (method.instructions.size() > 0) {
Analyzer analyzer = new Analyzer(new BasicInterpreter());
analyzer.analyze(classNode.name, method);
Frame[] frames = analyzer.getFrames();
// Elements of the frames array now contains info for each instruction
// from the analyzed method. BasicInterpreter creates BasicValue, that
// is using simplified type system that distinguishes the UNINITIALZED,
// INT, FLOAT, LONG, DOUBLE, REFERENCE and RETURNADDRESS types.
...
}
}
- 从以下版本开始:
- ASM 1.4.3
-
类说明A semantic bytecode analyzer.An exception thrown if a problem occurs during the analysis of a method.An
InterpreterforBasicValuevalues.AValuethat is represented with its type in a seven types type system.An extendedBasicInterpreterthat checks that bytecode instructions are correctly used.A symbolic execution stack frame.Interpreter<V extends Value>A semantic bytecode interpreter.An extendedBasicVerifierthat performs more precise verifications.AnInterpreterforSourceValuevalues.AValuewhich keeps track of the bytecode instructions that can produce it.An immutable symbolic value for the semantic interpretation of bytecode.