public class NullnessVisitor extends InitializationVisitor<NullnessAnnotatedTypeFactory,NullnessValue,NullnessStore>
annoFormatter, initializedFields| Constructor and Description |
|---|
NullnessVisitor(org.checkerframework.common.basetype.BaseTypeChecker checker,
boolean useFbc) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
checkExceptionParameter(CatchTree node) |
protected void |
checkForRedundantTests(BinaryTree node)
Reports an error if a comparison of a @NonNull expression with the null literal is performed.
|
protected void |
checkMethodInvocability(org.checkerframework.framework.type.AnnotatedTypeMirror.AnnotatedExecutableType method,
MethodInvocationTree node) |
protected void |
checkThrownExpression(ThrowTree node)
Case 4: Check for thrown exception nullness
|
protected void |
commonAssignmentCheck(org.checkerframework.framework.type.AnnotatedTypeMirror varType,
org.checkerframework.framework.type.AnnotatedTypeMirror valueType,
Tree valueTree,
@CompilerMessageKey java.lang.String errorKey) |
protected void |
commonAssignmentCheck(org.checkerframework.framework.type.AnnotatedTypeMirror varType,
ExpressionTree valueExp,
@CompilerMessageKey java.lang.String errorKey) |
protected void |
commonAssignmentCheck(Tree varTree,
ExpressionTree valueExp,
@CompilerMessageKey java.lang.String errorKey) |
NullnessAnnotatedTypeFactory |
createTypeFactory() |
boolean |
isValidUse(org.checkerframework.framework.type.AnnotatedTypeMirror.AnnotatedDeclaredType declarationType,
org.checkerframework.framework.type.AnnotatedTypeMirror.AnnotatedDeclaredType useType,
Tree tree) |
boolean |
isValidUse(org.checkerframework.framework.type.AnnotatedTypeMirror.AnnotatedPrimitiveType type,
Tree tree) |
java.lang.Void |
visitArrayAccess(ArrayAccessTree node,
java.lang.Void p)
Case 3: Check for array dereferencing
|
java.lang.Void |
visitAssert(AssertTree node,
java.lang.Void p) |
java.lang.Void |
visitBinary(BinaryTree node,
java.lang.Void p)
Case 6: Check for redundant nullness tests Case 7: unboxing case: primitive operations
|
java.lang.Void |
visitCompoundAssignment(CompoundAssignmentTree node,
java.lang.Void p)
Case 7: unboxing case: primitive operation
|
java.lang.Void |
visitConditionalExpression(ConditionalExpressionTree node,
java.lang.Void p) |
java.lang.Void |
visitDoWhileLoop(DoWhileLoopTree node,
java.lang.Void p) |
java.lang.Void |
visitEnhancedForLoop(EnhancedForLoopTree node,
java.lang.Void p)
Case 2: Check for implicit
.iterator call |
java.lang.Void |
visitForLoop(ForLoopTree node,
java.lang.Void p) |
java.lang.Void |
visitIf(IfTree node,
java.lang.Void p) |
java.lang.Void |
visitMemberSelect(MemberSelectTree node,
java.lang.Void p)
Case 1: Check for null dereferencing
|
java.lang.Void |
visitNewArray(NewArrayTree node,
java.lang.Void p) |
java.lang.Void |
visitNewClass(NewClassTree node,
java.lang.Void p) |
java.lang.Void |
visitSwitch(SwitchTree node,
java.lang.Void p) |
java.lang.Void |
visitSynchronized(SynchronizedTree node,
java.lang.Void p)
Case 5: Check for synchronizing locks
|
java.lang.Void |
visitTypeCast(TypeCastTree node,
java.lang.Void p)
Case 7: unboxing case: casting to a primitive
|
java.lang.Void |
visitUnary(UnaryTree node,
java.lang.Void p)
Case 7: unboxing case: primitive operation
|
java.lang.Void |
visitWhileLoop(WhileLoopTree node,
java.lang.Void p) |
checkConstructorInvocation, checkContract, checkFieldsInitialized, processClassTree, setRoot, visitMethod, visitVariablecheckAccess, checkArguments, checkArrayInitialization, checkAssignability, checkConditionalPostcondition, checkDefaultConstructor, checkFieldInvariantDeclarations, checkForAnnotatedJdk, checkMethodReferenceAsOverride, checkOverride, checkOverride, checkPostcondition, checkPreconditions, checkTypeArguments, checkTypecastRedundancy, checkTypecastSafety, checkVarargs, createOverrideChecker, createTypeValidator, enclosingMemberSelect, enclosingStatement, getExceptionParameterLowerBoundAnnotations, getThrowUpperBoundAnnotations, getTypeFactory, isAccessAllowed, isAssignable, isValidUse, isVectorCopyInto, reportPurityErrors, scan, shouldSkipUses, skipReceiverSubtypeCheck, testTypevarContainment, typeCheckVectorCopyIntoArgument, validateType, validateTypeOf, visitAnnotation, visitAssignment, visitCatch, visitClass, visitCompilationUnit, visitIdentifier, visitInstanceOf, visitLambdaExpression, visitMemberReference, visitMethodInvocation, visitParameterizedType, visitReturn, visitThrow, visitTypeParametergetCurrentPath, scanreduce, scan, visitAnnotatedType, visitArrayType, visitBlock, visitBreak, visitCase, visitContinue, visitEmptyStatement, visitErroneous, visitExpressionStatement, visitImport, visitIntersectionType, visitLabeledStatement, visitLiteral, visitModifiers, visitOther, visitParenthesized, visitPrimitiveType, visitTry, visitUnionType, visitWildcardpublic NullnessVisitor(org.checkerframework.common.basetype.BaseTypeChecker checker,
boolean useFbc)
public NullnessAnnotatedTypeFactory createTypeFactory()
createTypeFactory in class org.checkerframework.common.basetype.BaseTypeVisitor<NullnessAnnotatedTypeFactory>public boolean isValidUse(org.checkerframework.framework.type.AnnotatedTypeMirror.AnnotatedDeclaredType declarationType,
org.checkerframework.framework.type.AnnotatedTypeMirror.AnnotatedDeclaredType useType,
Tree tree)
isValidUse in class org.checkerframework.common.basetype.BaseTypeVisitor<NullnessAnnotatedTypeFactory>public boolean isValidUse(org.checkerframework.framework.type.AnnotatedTypeMirror.AnnotatedPrimitiveType type,
Tree tree)
isValidUse in class org.checkerframework.common.basetype.BaseTypeVisitor<NullnessAnnotatedTypeFactory>protected void commonAssignmentCheck(Tree varTree, ExpressionTree valueExp, @CompilerMessageKey java.lang.String errorKey)
commonAssignmentCheck in class InitializationVisitor<NullnessAnnotatedTypeFactory,NullnessValue,NullnessStore>protected void commonAssignmentCheck(org.checkerframework.framework.type.AnnotatedTypeMirror varType,
ExpressionTree valueExp,
@CompilerMessageKey java.lang.String errorKey)
commonAssignmentCheck in class org.checkerframework.common.basetype.BaseTypeVisitor<NullnessAnnotatedTypeFactory>protected void commonAssignmentCheck(org.checkerframework.framework.type.AnnotatedTypeMirror varType,
org.checkerframework.framework.type.AnnotatedTypeMirror valueType,
Tree valueTree,
@CompilerMessageKey java.lang.String errorKey)
commonAssignmentCheck in class org.checkerframework.common.basetype.BaseTypeVisitor<NullnessAnnotatedTypeFactory>public java.lang.Void visitMemberSelect(MemberSelectTree node, java.lang.Void p)
visitMemberSelect in interface TreeVisitor<java.lang.Void,java.lang.Void>visitMemberSelect in class TreeScanner<java.lang.Void,java.lang.Void>public java.lang.Void visitEnhancedForLoop(EnhancedForLoopTree node, java.lang.Void p)
.iterator callvisitEnhancedForLoop in interface TreeVisitor<java.lang.Void,java.lang.Void>visitEnhancedForLoop in class org.checkerframework.common.basetype.BaseTypeVisitor<NullnessAnnotatedTypeFactory>public java.lang.Void visitArrayAccess(ArrayAccessTree node, java.lang.Void p)
visitArrayAccess in interface TreeVisitor<java.lang.Void,java.lang.Void>visitArrayAccess in class org.checkerframework.common.basetype.BaseTypeVisitor<NullnessAnnotatedTypeFactory>public java.lang.Void visitNewArray(NewArrayTree node, java.lang.Void p)
visitNewArray in interface TreeVisitor<java.lang.Void,java.lang.Void>visitNewArray in class org.checkerframework.common.basetype.BaseTypeVisitor<NullnessAnnotatedTypeFactory>protected void checkThrownExpression(ThrowTree node)
checkThrownExpression in class org.checkerframework.common.basetype.BaseTypeVisitor<NullnessAnnotatedTypeFactory>public java.lang.Void visitSynchronized(SynchronizedTree node, java.lang.Void p)
visitSynchronized in interface TreeVisitor<java.lang.Void,java.lang.Void>visitSynchronized in class TreeScanner<java.lang.Void,java.lang.Void>public java.lang.Void visitAssert(AssertTree node, java.lang.Void p)
visitAssert in interface TreeVisitor<java.lang.Void,java.lang.Void>visitAssert in class TreeScanner<java.lang.Void,java.lang.Void>public java.lang.Void visitIf(IfTree node, java.lang.Void p)
visitIf in interface TreeVisitor<java.lang.Void,java.lang.Void>visitIf in class TreeScanner<java.lang.Void,java.lang.Void>protected void checkForRedundantTests(BinaryTree node)
public java.lang.Void visitBinary(BinaryTree node, java.lang.Void p)
visitBinary in interface TreeVisitor<java.lang.Void,java.lang.Void>visitBinary in class TreeScanner<java.lang.Void,java.lang.Void>public java.lang.Void visitUnary(UnaryTree node, java.lang.Void p)
visitUnary in interface TreeVisitor<java.lang.Void,java.lang.Void>visitUnary in class org.checkerframework.common.basetype.BaseTypeVisitor<NullnessAnnotatedTypeFactory>public java.lang.Void visitCompoundAssignment(CompoundAssignmentTree node, java.lang.Void p)
visitCompoundAssignment in interface TreeVisitor<java.lang.Void,java.lang.Void>visitCompoundAssignment in class org.checkerframework.common.basetype.BaseTypeVisitor<NullnessAnnotatedTypeFactory>public java.lang.Void visitTypeCast(TypeCastTree node, java.lang.Void p)
visitTypeCast in interface TreeVisitor<java.lang.Void,java.lang.Void>visitTypeCast in class InitializationVisitor<NullnessAnnotatedTypeFactory,NullnessValue,NullnessStore>protected void checkMethodInvocability(org.checkerframework.framework.type.AnnotatedTypeMirror.AnnotatedExecutableType method,
MethodInvocationTree node)
checkMethodInvocability in class org.checkerframework.common.basetype.BaseTypeVisitor<NullnessAnnotatedTypeFactory>public java.lang.Void visitSwitch(SwitchTree node, java.lang.Void p)
visitSwitch in interface TreeVisitor<java.lang.Void,java.lang.Void>visitSwitch in class TreeScanner<java.lang.Void,java.lang.Void>public java.lang.Void visitForLoop(ForLoopTree node, java.lang.Void p)
visitForLoop in interface TreeVisitor<java.lang.Void,java.lang.Void>visitForLoop in class TreeScanner<java.lang.Void,java.lang.Void>public java.lang.Void visitNewClass(NewClassTree node, java.lang.Void p)
visitNewClass in interface TreeVisitor<java.lang.Void,java.lang.Void>visitNewClass in class org.checkerframework.common.basetype.BaseTypeVisitor<NullnessAnnotatedTypeFactory>public java.lang.Void visitWhileLoop(WhileLoopTree node, java.lang.Void p)
visitWhileLoop in interface TreeVisitor<java.lang.Void,java.lang.Void>visitWhileLoop in class TreeScanner<java.lang.Void,java.lang.Void>public java.lang.Void visitDoWhileLoop(DoWhileLoopTree node, java.lang.Void p)
visitDoWhileLoop in interface TreeVisitor<java.lang.Void,java.lang.Void>visitDoWhileLoop in class TreeScanner<java.lang.Void,java.lang.Void>public java.lang.Void visitConditionalExpression(ConditionalExpressionTree node, java.lang.Void p)
visitConditionalExpression in interface TreeVisitor<java.lang.Void,java.lang.Void>visitConditionalExpression in class org.checkerframework.common.basetype.BaseTypeVisitor<NullnessAnnotatedTypeFactory>protected void checkExceptionParameter(CatchTree node)
checkExceptionParameter in class org.checkerframework.common.basetype.BaseTypeVisitor<NullnessAnnotatedTypeFactory>