Package com.ibm.wala.shrikeBT.analysis
Class Verifier
- java.lang.Object
-
- com.ibm.wala.shrikeBT.analysis.Analyzer
-
- com.ibm.wala.shrikeBT.analysis.Verifier
-
public final class Verifier extends Analyzer
This class typechecks intermediate code. It's very easy to use:MethodData md = ...; try { (new Verifier(md)).verify(); } catch (Verifier.FailureException ex) { System.out.println("Verification failed at instruction " + ex.getOffset() + ": " + ex.getReason()); }
For full verification you need to provide class hierarchy information using setClassHierarchy. Without this information, we can't compute the exact types of variables at control flow merge points. If you don't provide a hierarchy, or the hierarchy you provide is partial, then the Verifier will be optimistic. This method can also be used to gather type information for every stack and local variable at every program point. Just call computeTypes() instead of verify() and then retrieve the results with getLocalTypes() and getStackTypes().
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class com.ibm.wala.shrikeBT.analysis.Analyzer
Analyzer.FailureException, Analyzer.PathElement, Analyzer.TypeVisitor
-
-
Constructor Summary
Constructors Constructor Description Verifier(boolean isConstructor, boolean isStatic, String classType, String signature, IInstruction[] instructions, ExceptionHandler[][] handlers, int[] instToBC, String[][] vars)
Initialize a verifier.Verifier(MethodData info)
Initialize a verifier.Verifier(MethodData info, int[] instToBC, String[][] vars)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
computeTypes()
void
verify()
Try to verify the method.void
verifyCollectAll()
-
Methods inherited from class com.ibm.wala.shrikeBT.analysis.Analyzer
computeTypes, createAnalyzer, findCommonSupertype, getBackEdges, getBasicBlockStarts, getInstructions, getLocalTypes, getReachableFrom, getReachableFrom, getReachableFromUpdate, getReachingToUpdate, getStackSizes, getStackTypes, initTypeInfo, isSubtypeOf, setClassHierarchy, stripSharp
-
-
-
-
Constructor Detail
-
Verifier
public Verifier(boolean isConstructor, boolean isStatic, String classType, String signature, IInstruction[] instructions, ExceptionHandler[][] handlers, int[] instToBC, String[][] vars)
Initialize a verifier.
-
Verifier
public Verifier(MethodData info) throws NullPointerException
Initialize a verifier.- Throws:
NullPointerException
- if info is null
-
Verifier
public Verifier(MethodData info, int[] instToBC, String[][] vars) throws NullPointerException
- Throws:
NullPointerException
-
-
Method Detail
-
verify
public void verify() throws Analyzer.FailureException
Try to verify the method. If verification is unsuccessful, we throw an exception.- Throws:
Analyzer.FailureException
- the method contains invalid bytecode
-
verifyCollectAll
public void verifyCollectAll() throws Analyzer.FailureException
- Throws:
Analyzer.FailureException
-
computeTypes
public void computeTypes() throws Analyzer.FailureException
- Throws:
Analyzer.FailureException
-
-