Package daikon.tools.runtimechecker
Class InstrumentVisitor
- Object
-
- DepthFirstVisitor
-
- InstrumentVisitor
-
- All Implemented Interfaces:
Visitor
public class InstrumentVisitor extends DepthFirstVisitor
Visitor that instruments a Java source file (i.e. adds code at certain places) to check invariant violations at run time.
-
-
Field Summary
Fields Modifier and Type Field Description CheckerClasses
checkerClasses
static double
confidenceThreshold
static boolean
makeAllFieldsPublic
static boolean
outputOnlyHighConfInvariants
List<Constructor<?>>
visitedConstructors
List<Method>
visitedMethods
-
Fields inherited from class DepthFirstVisitor
debug, indent, indents
-
-
Constructor Summary
Constructors Constructor Description InstrumentVisitor(PptMap pptmap, TypeDeclaration root)
Create a visitor that will insert code to check the invariants contained in pptmap.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
add_checkers_for_nondeclared_members()
Add checker methods with empty bodies for all public methods and constuctors not explicitly declared.void
visit(ClassOrInterfaceBody clazz)
Adds the following new methods:void
visit(ConstructorDeclaration ctor)
Adds code to check class invariants and preconditions on entry (but not object invariants, because there's no object yet!).void
visit(FieldDeclaration fd)
If makeAllFieldsPublic == true, then it makes this field declaration public.void
visit(MethodDeclaration method)
-
Methods inherited from class DepthFirstVisitor
visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit
-
-
-
-
Field Detail
-
outputOnlyHighConfInvariants
public static boolean outputOnlyHighConfInvariants
-
confidenceThreshold
public static double confidenceThreshold
-
makeAllFieldsPublic
public static boolean makeAllFieldsPublic
-
checkerClasses
public CheckerClasses checkerClasses
-
visitedMethods
public List<Method> visitedMethods
-
visitedConstructors
public List<Constructor<?>> visitedConstructors
-
-
Constructor Detail
-
InstrumentVisitor
public InstrumentVisitor(PptMap pptmap, TypeDeclaration root)
Create a visitor that will insert code to check the invariants contained in pptmap.
-
-
Method Detail
-
visit
public void visit(FieldDeclaration fd)
If makeAllFieldsPublic == true, then it makes this field declaration public.- Specified by:
visit
in interfaceVisitor
- Overrides:
visit
in classDepthFirstVisitor
-
visit
public void visit(ClassOrInterfaceBody clazz)
Adds the following new methods:checkClassInvariantsInstrument(daikon.tools.runtimechecker.Violation.Time time) Checks the class invariants.
checkObjectInvariants_instrument(daikon.tools.runtimechecker.Violation.Time time) Check the object invariants
isDaikonInstrumented() returns true (you can imagine calling this method to see if the class has been instrumented).
getDaikonInvariants() Returns th array of properties being checked.
Adds the following field:
daikon.tools.runtimechecker.Property[] daikonProperties The properties being checked.
Adds code that initializes the properties array.
- Specified by:
visit
in interfaceVisitor
- Overrides:
visit
in classDepthFirstVisitor
-
visit
public void visit(ConstructorDeclaration ctor)
Adds code to check class invariants and preconditions on entry (but not object invariants, because there's no object yet!).Adds code to check postcontiions, class and object invariants on exit.
- Specified by:
visit
in interfaceVisitor
- Overrides:
visit
in classDepthFirstVisitor
-
visit
public void visit(MethodDeclaration method)
- Specified by:
visit
in interfaceVisitor
- Overrides:
visit
in classDepthFirstVisitor
-
add_checkers_for_nondeclared_members
public void add_checkers_for_nondeclared_members()
Add checker methods with empty bodies for all public methods and constuctors not explicitly declared.
-
-