Package org.objectweb.asm.tree.analysis

Provides a framework for static code analysis based on the asm.tree package.

See:
          Description

Interface Summary
Interpreter A semantic bytecode interpreter.
Value An immutable symbolic value for semantic interpretation of bytecode.
 

Class Summary
Analyzer A semantic bytecode analyzer.
BasicInterpreter An Interpreter for BasicValue values.
BasicValue A Value that is represented by its type in a seven types type system.
BasicVerifier An extended BasicInterpreter that checks that bytecode instructions are correctly used.
Frame A symbolic execution stack frame.
SimpleVerifier An extended BasicVerifier that performs more precise verifications.
SmallSet A set of at most two elements.
SourceInterpreter An Interpreter for SourceValue values.
SourceValue A Value that is represented by its type in a two types type system.
Subroutine A method subroutine (corresponds to a JSR instruction).
 

Exception Summary
AnalyzerException Thrown if a problem occurs during the analysis of a method.
 

Package org.objectweb.asm.tree.analysis Description

Provides a framework for static code analysis based on the asm.tree package.

Basic usage:

ClassReader cr = new ClassReader(bytecode);
ClassNode cn = new ClassNode();
cr.accept(cn, ClassReader.SKIP_DEBUG);

List methods = cn.methods;
for (int i = 0; i < methods.size(); ++i) {
    MethodNode method = (MethodNode) methods.get(i);
    if (method.instructions.size() > 0) {
        Analyzer a = new Analyzer(new BasicInterpreter());
        a.analyze(cn.name, method);
        Frame[] frames = a.getFrames();
        // Elements of the frames arrray 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.
        ...
    }
}   

Since:
ASM 1.4.3