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, visitVariable
checkAccess, 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, visitTypeParameter
getCurrentPath, scan
reduce, scan, visitAnnotatedType, visitArrayType, visitBlock, visitBreak, visitCase, visitContinue, visitEmptyStatement, visitErroneous, visitExpressionStatement, visitImport, visitIntersectionType, visitLabeledStatement, visitLiteral, visitModifiers, visitOther, visitParenthesized, visitPrimitiveType, visitTry, visitUnionType, visitWildcard
public 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>