|
||||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES | |||||||||
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. |
| SourceInterpreter | An Interpreter for SourceValue values. |
| SourceValue | A Value that is represented by its type in a two types type system. |
| Exception Summary | |
|---|---|
| AnalyzerException | Thrown if a problem occurs during the analysis of a method. |
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.
...
}
}
|
||||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES | |||||||||