Package spoon

Class ContractVerifier


  • public class ContractVerifier
    extends Object
    Verifies all contracts that should hold on any AST. Usage: `new ContractVerifier(pack).verifyAll();`
    • Constructor Detail

      • ContractVerifier

        public ContractVerifier​(CtPackage rootPackage)
      • ContractVerifier

        public ContractVerifier()
        use at your own risk, not part of the public API
    • Method Detail

      • verify

        public void verify()
        verify all possible contracts in this class
      • checkModifiers

        public void checkModifiers()
        verifies that the explicit modifier should be present in the original source code
      • checkParentContract

        public void checkParentContract()
        checks that there is always one parent, corresponding to the scanning order
      • checkBoundAndUnboundTypeReference

        public void checkBoundAndUnboundTypeReference()
      • checkShadow

        public void checkShadow()
        check that we have all shadow elements, and that they are correctly isShadow
      • checkContractCtScanner

        public void checkContractCtScanner()
        verifies the core scanning contracts (enter implies exit, etc)
      • checkAssignmentContracts

        public void checkAssignmentContracts()
        checks that all assignments are aither a CtFieldWrite, a CtVariableWrite or a CtArrayWrite
      • checkParentConsistency

        public void checkParentConsistency()
        checks that the scanner behavior and the parents correspond
      • checkParentConsistency

        public void checkParentConsistency​(CtElement element)
        public modifier for testing purpose only, not in the public API
      • checkModelIsTree

        public void checkModelIsTree()
        contract: each element is used only once in the model
      • checkRoleInParent

        public void checkRoleInParent()
      • checkElementToPathToElementEquivalence

        public void checkElementToPathToElementEquivalence()
        checks that for all elements, the path can be obtained, parsed, and give the same element when evaluated
      • checkElementIsContainedInAttributeOfItsParent

        public void checkElementIsContainedInAttributeOfItsParent()
        contract: element is contained in attribute of element's parent
      • checkGenericContracts

        public void checkGenericContracts()
      • checkJavaIdentifiers

        public void checkJavaIdentifiers()
        checks that the identifiers are valid