Class RLCCalledMethodsAnnotatedTypeFactory
- All Implemented Interfaces:
CreatesMustCallForElementSupplier
,AnnotationProvider
postAnalyze(ControlFlowGraph)
method checks that must-call obligations are fulfilled.-
Nested Class Summary
Nested classes/interfaces inherited from class org.checkerframework.common.accumulation.AccumulationAnnotatedTypeFactory
AccumulationAnnotatedTypeFactory.AccumulationQualifierHierarchy, AccumulationAnnotatedTypeFactory.AccumulationTreeAnnotator
Nested classes/interfaces inherited from class org.checkerframework.framework.type.GenericAnnotatedTypeFactory
GenericAnnotatedTypeFactory.ScanState
Nested classes/interfaces inherited from class org.checkerframework.framework.type.AnnotatedTypeFactory
AnnotatedTypeFactory.CapturedTypeVarSubstitutor, AnnotatedTypeFactory.ParameterizedExecutableType
-
Field Summary
FieldsModifier and TypeFieldDescriptionfinal ExecutableElement
The EnsuresCalledMethods.methods element/field.final ExecutableElement
The EnsuresCalledMethods.value element/field.Fields inherited from class org.checkerframework.common.accumulation.AccumulationAnnotatedTypeFactory
accumulationChecker, bottom, top
Fields inherited from class org.checkerframework.framework.type.GenericAnnotatedTypeFactory
analysis, arraysAreRelevant, cfgVisualizer, contractsUtils, defaults, dependentTypesHelper, emptyStore, exceptionalExitStores, flowByDefault, flowResult, flowResultAnalysisCaches, formalParameterPattern, hasOrIsSubchecker, initializationStaticStore, initializationStore, methodInvocationStores, poly, regularExitStores, relevantJavaTypes, returnStatementStores, scannedClasses, shouldClearSubcheckerSharedCFGs, sideEffectsUnrefineAliases, subcheckerSharedCFG, transfer, treeAnnotator, typeAnnotator
Fields inherited from class org.checkerframework.framework.type.AnnotatedTypeFactory
ajavaTypes, annotatedForValueElement, artificialTreeToEnclosingElementMap, capturedTypeVarSubstitutor, checker, currentFileAjavaTypes, elements, ensuresQualifierExpressionElement, ensuresQualifierIfExpressionElement, ensuresQualifierIfListTM, ensuresQualifierIfListValueElement, ensuresQualifierIfResultElement, ensuresQualifierIfTM, ensuresQualifierListTM, ensuresQualifierListValueElement, ensuresQualifierTM, fieldInvariantFieldElement, fieldInvariantQualifierElement, fromExpressionTreeCache, fromMemberTreeCache, fromTypeTreeCache, hasQualifierParameterValueElement, ignoreRawTypeArguments, loader, methodValClassNameElement, methodValMethodNameElement, methodValParamsElement, noQualifierParameterValueElement, objectGetClass, processingEnv, qualHierarchy, qualifierUpperBounds, reflectionResolver, requiresQualifierExpressionElement, requiresQualifierListTM, requiresQualifierListValueElement, requiresQualifierTM, root, shouldCache, stubTypes, trees, typeArgumentInference, typeFormatter, typeHierarchy, typeInformationPresenter, types, typeVarSubstitutor, uid, wpiOutputFormat
-
Constructor Summary
ConstructorsConstructorDescriptionCreates a new RLCCalledMethodsAnnotatedTypeFactory. -
Method Summary
Modifier and TypeMethodDescriptionvoid
addTempVar
(LocalVariableNode tmpVar, Tree tree) Registers a temporary variable by adding it to this type factory's tempvar map.boolean
Does this type factory supportCreatesMustCallFor
?createCalledMethods
(String... val) Creates a @CalledMethods annotation whose values are the given strings.protected RLCCalledMethodsAnalysis
Returns the appropriate flow analysis class that is used for the org.checkerframework.dataflow analysis.protected Set
<Class<? extends Annotation>> Returns a mutable set of annotation classes that are supported by a checker.boolean
declaredTypeHasMustCall
(Tree tree) Returns true if the type of the tree includes a must-call annotation.Returns theCreatesMustCallFor.List.value()
element.Returns theCreatesMustCallFor.value()
element.Returns theEnsuresCalledMethods.List.value()
element.getExceptionalPostconditions
(ExecutableElement methodOrConstructor) Get the exceptional postconditions for the given method from theEnsuresCalledMethodsOnException
annotations on it.Fetches the transfer input for the given block, either from the flowResult, if the analysis is still running, or else from the analysis itself.getMustCallValues
(@Nullable AnnotationMirror mustCallAnnotation) Helper method for getting the must-call values from a must-call annotation.getMustCallValues
(Element element) Returns theMustCall.value()
element/argument of the @MustCall annotation on the class type ofelement
.getTempVarForNode
(Node node) Helper method to get the temporary variable that represents the given node, if one exists.getTreeForTempVar
(Node node) Gets the tree for a temporary variable<T extends GenericAnnotatedTypeFactory<?,
?, ?, ?>>
@Nullable TgetTypeFactoryOfSubcheckerOrNull
(Class<? extends SourceChecker> subCheckerClass) Returns the type factory used by a subchecker.boolean
Returns true if the declaration of the method being invoked has one or moreCreatesMustCallFor
annotations.boolean
hasEmptyMustCallValue
(Tree tree) Returns whether theMustCall.value()
element/argument of the @MustCall annotation on the type oftree
is definitely empty.boolean
hasEmptyMustCallValue
(Element element) Returns whether theMustCall.value()
element/argument of the @MustCall annotation on the type ofelement
is definitely empty.boolean
hasMustCallAlias
(Tree tree) Returns true if the given tree has anMustCallAlias
annotation and resource-alias tracking is not disabled.boolean
hasMustCallAlias
(Element elt) Returns true if the given element has anMustCallAlias
annotation and resource-alias tracking is not disabled.boolean
hasNotOwning
(Element elt) Does the given element have an@NotOwning
annotation (including in stub files)?boolean
Does the given element have an@Owning
annotation (including in stub files)?boolean
isIgnoredExceptionType
(TypeMirror exceptionType) Returns true if the checker should ignore exceptional control flow due to the given exception type.boolean
Is the given node a temporary variable?void
Perform any additional operations on a CFG.Methods inherited from class org.checkerframework.checker.calledmethods.CalledMethodsAnnotatedTypeFactory
adjustMethodNameUsingValueChecker, createRequiresOrEnsuresQualifier, createTreeAnnotator, createTypeAnnotator, getCalledMethods, getDummyAssignedTo, returnsThis
Methods inherited from class org.checkerframework.common.accumulation.AccumulationAnnotatedTypeFactory
convertToPredicate, createAccumulatorAnnotation, createAccumulatorAnnotation, createPredicateAnnotation, createQualifierHierarchy, evaluatePredicate, evaluatePredicate, getAccumulatedValues, getAccumulatedValues, isAccumulatorAnnotation, isPredicate, isPredicateSubtype
Methods inherited from class org.checkerframework.framework.type.GenericAnnotatedTypeFactory
addAnnotationsFromDefaultForType, addCheckedCodeDefaults, addCheckedStandardDefaults, addComputedTypeAnnotations, addComputedTypeAnnotations, addComputedTypeAnnotations, addComputedTypeAnnotationsForWarnRedundant, addDefaultAnnotations, addSharedCFGForTree, addUncheckedStandardDefaults, analyze, annotationsForIrrelevantJavaType, applyInferredAnnotations, applyQualifierParameterDefaults, applyQualifierParameterDefaults, checkAndPerformFlowAnalysis, checkForDefaultQualifierInHierarchy, constructorFromUse, constructorFromUsePreSubstitution, createAndInitQualifierDefaults, createCFGVisualizer, createContractsFromMethod, createDefaultForTypeAnnotator, createDefaultForUseTypeAnnotator, createDependentTypesHelper, createFlowTransferFunction, createQualifierDefaults, createQualifierPolymorphism, getAnnotatedTypeLhs, getAnnotatedTypeLhsNoTypeVarDefault, getAnnotatedTypeRhsUnaryAssign, getAnnotatedTypeVarargsArray, getAnnotationFromJavaExpression, getAnnotationFromJavaExpressionString, getAnnotationMirrorFromJavaExpressionString, getAnnotationsFromJavaExpression, getCFGVisualizer, getContractAnnotations, getContractAnnotations, getContractExpressions, getContractsFromMethod, getDefaultAnnotations, getDefaultAnnotationsForWarnRedundant, getDefaultForTypeAnnotator, getDefaultValueAnnotatedType, getDependentTypesHelper, getEmptyStore, getEnsuresQualifierIfResult, getExceptionalExitStore, getExplicitNewClassAnnos, getExplicitNewClassClassTypeArgs, getExpressionAndOffsetFromJavaExpressionString, getFinalLocalValues, getFirstNodeOfKindForTree, getInferredValueFor, getMethodReturnType, getNodesForTree, getPostconditionAnnotations, getPostconditionAnnotations, getPostconditionAnnotations, getPreconditionAnnotations, getPreconditionAnnotations, getPreconditionAnnotations, getPreOrPostconditionAnnotations, getQualifierPolymorphism, getRegularExitStore, getReturnStatementStores, getSharedCFGForTree, getShouldDefaultTypeVarLocals, getSortedQualifierNames, getStoreAfter, getStoreAfter, getStoreAfter, getStoreBefore, getStoreBefore, getStoreBefore, getSupportedMonotonicTypeQualifiers, getTypeFactoryOfSubchecker, handleCFGViz, irrelevantExtraMessage, isRelevant, isRelevant, isRelevantImpl, isUnreachable, methodFromUse, methodFromUsePreSubstitution, parseJavaExpressionString, performFlowAnalysis, postAsMemberOf, postDirectSuperTypes, postInit, preProcessClassTree, setRoot, typeVariablesFromUse
Methods inherited from class org.checkerframework.framework.type.AnnotatedTypeFactory
adaptGetClassReturnTypeToReceiver, addAliasedDeclAnnotation, addAliasedTypeAnnotation, addAliasedTypeAnnotation, addAliasedTypeAnnotation, addAliasedTypeAnnotation, addAnnotationFromFieldInvariant, addInheritedAnnotation, applyCaptureConversion, applyCaptureConversion, applyUnboxing, areSameByClass, binaryTreeArgTypes, binaryTreeArgTypes, canonicalAnnotation, checkInvalidOptionsInferSignatures, compoundAssignmentTreeArgTypes, constructorFromUse, constructorFromUseWithoutTypeArgInference, containsCapturedTypes, containsSameByClass, createAnnotatedTypeFormatter, createAnnotationClassLoader, createAnnotationFormatter, createQualifierUpperBounds, createTypeArgumentInference, createTypeHierarchy, createTypeInformationPresenter, createTypeVariableSubstitutor, declarationFromElement, doesAnnotatedForApplyToThisChecker, fromElement, fromElement, fromElement, getAnnotatedNullType, getAnnotatedType, getAnnotatedType, getAnnotatedType, getAnnotatedType, getAnnotatedType, getAnnotatedType, getAnnotatedType, getAnnotatedType, getAnnotatedType, getAnnotatedTypeFormatter, getAnnotatedTypeFromTypeTree, getAnnotationByClass, getAnnotationFormatter, getAnnotationMirror, getAnnotationWithMetaAnnotation, getBoxedType, getBundledTypeQualifiers, getCacheSize, getChecker, getCheckerNames, getContractExpressions, getContractListValues, getDeclAnnotation, getDeclAnnotationNoAliases, getDeclAnnotations, getDeclAnnotationWithMetaAnnotation, getDefaultTypeDeclarationBounds, getElementUtils, getEnclosingClassOrMethod, getEnclosingElementForArtificialTree, getEnclosingSubType, getEnclosingType, getEnumConstructorQualifiers, getExpressionAndOffset, getFieldInvariantAnnotationTree, getFieldInvariantDeclarationAnnotations, getFieldInvariants, getFnInterfaceFromTree, getFunctionTypeFromTree, getFunctionTypeFromTree, getImplicitReceiverType, getIterableElementType, getIterableElementType, getMethodReturnType, getNarrowedAnnotations, getNarrowedPrimitive, getPath, getProcessingEnv, getQualifierHierarchy, getQualifierParameterHierarchies, getQualifierParameterHierarchies, getQualifierUpperBounds, getReceiverType, getResultingTypeOfConstructorMemberReference, getSelfType, getStringType, getSupportedTypeQualifierNames, getSupportedTypeQualifiers, getTreeUtils, getTypeArgumentInference, getTypeDeclarationBounds, getTypeHierarchy, getTypeOfExtendsImplements, getTypeVarSubstitutor, getUnboxedType, getVisitorTreePath, getWholeProgramInference, getWidenedAnnotations, getWidenedType, getWidenedType, hasExplicitNoQualifierParameterInHierarchy, hasExplicitQualifierParameterInHierarchy, hasQualifierParameterInHierarchy, hasQualifierParameterInHierarchy, initializeAtm, initializeReflectionResolution, isDeterministic, isFromByteCode, isFromStubFile, isImmutable, isSideEffectFree, isSupportedQualifier, isSupportedQualifier, isSupportedQualifier, isTop, isWithinConstructor, logGat, makeConditionConsistentWithOtherMethod, mergeAnnotationFileAnnosIntoType, methodFromUse, methodFromUse, methodFromUse, methodFromUseWithoutTypeArgInference, methodFromUseWithoutTypeArgInference, negateConstant, order, parseAnnotationFiles, postProcessClassTree, replaceAnnotations, replaceAnnotations, setEnclosingElementForArtificialTree, setVisitorTreePath, shouldWarnIfStubRedundantWithBytecode, toAnnotatedType, toString, type, wpiAdjustForUpdateField, wpiAdjustForUpdateNonField, wpiPrepareMethodForWriting, wpiPrepareMethodForWriting, wpiShouldInferTypesForReceivers
-
Field Details
-
ensuresCalledMethodsValueElement
The EnsuresCalledMethods.value element/field. -
ensuresCalledMethodsMethodsElement
The EnsuresCalledMethods.methods element/field.
-
-
Constructor Details
-
RLCCalledMethodsAnnotatedTypeFactory
Creates a new RLCCalledMethodsAnnotatedTypeFactory.- Parameters:
checker
- the checker associated with this type factory
-
-
Method Details
-
createSupportedTypeQualifiers
Description copied from class:AnnotatedTypeFactory
Returns a mutable set of annotation classes that are supported by a checker.Subclasses may override this method to return a mutable set of their supported type qualifiers through one of the 5 approaches shown below.
Subclasses should not call this method; they should call
AnnotatedTypeFactory.getSupportedTypeQualifiers()
instead.By default, a checker supports all annotations located in a subdirectory called qual that's located in the same directory as the checker. Note that only annotations defined with the
@Target({ElementType.TYPE_USE})
meta-annotation (and optionally with the additional value ofElementType.TYPE_PARAMETER
, but no otherElementType
values) are automatically considered as supported annotations.To support a different set of annotations than those in the qual subdirectory, or that have other
ElementType
values, see examples below.In total, there are 5 ways to indicate annotations that are supported by a checker:
- Only support annotations located in a checker's qual directory:
This is the default behavior. Simply place those annotations within the qual directory.
- Support annotations located in a checker's qual directory and a list of other
annotations:
Place those annotations within the qual directory, and override
AnnotatedTypeFactory.createSupportedTypeQualifiers()
by callingAnnotatedTypeFactory.getBundledTypeQualifiers(Class...)
with a varargs parameter list of the other annotations. Code example:@Override protected Set<Class<? extends Annotation>> createSupportedTypeQualifiers() { return getBundledTypeQualifiers(Regex.class, PartialRegex.class, RegexBottom.class, UnknownRegex.class); }
- Supporting only annotations that are explicitly listed: Override
AnnotatedTypeFactory.createSupportedTypeQualifiers()
and return a mutable set of the supported annotations. Code example:@Override protected Set<Class<? extends Annotation>> createSupportedTypeQualifiers() { return new HashSet<Class<? extends Annotation>>( Arrays.asList(A.class, B.class)); }
AnnotatedTypeFactory.createSupportedTypeQualifiers()
must be a fresh, mutable set. The methodsAnnotatedTypeFactory.getBundledTypeQualifiers(Class...)
must return a fresh, mutable set
- Overrides:
createSupportedTypeQualifiers
in classAnnotatedTypeFactory
- Returns:
- the type qualifiers supported this processor, or an empty set if none
- Only support annotations located in a checker's qual directory:
-
createCalledMethods
Creates a @CalledMethods annotation whose values are the given strings.- Parameters:
val
- the methods that have been called- Returns:
- an annotation indicating that the given methods have been called
-
postAnalyze
Description copied from class:GenericAnnotatedTypeFactory
Perform any additional operations on a CFG. Called once per CFG, after the CFG has been analyzed byGenericAnnotatedTypeFactory.analyze(Queue, Queue, UnderlyingAST, List, ClassTree, boolean, boolean, boolean, CFAbstractStore)
. This method can be used to initialize additional state or to perform any analyses that are easier to perform on the CFG instead of the AST.- Overrides:
postAnalyze
in classGenericAnnotatedTypeFactory<AccumulationValue,
AccumulationStore, AccumulationTransfer, AccumulationAnalysis> - Parameters:
cfg
- the CFG- See Also:
-
createFlowAnalysis
Description copied from class:GenericAnnotatedTypeFactory
Returns the appropriate flow analysis class that is used for the org.checkerframework.dataflow analysis.This implementation uses the checker naming convention to create the appropriate analysis. If no transfer function is found, it returns an instance of
CFAnalysis
.Subclasses have to override this method to create the appropriate analysis if they do not follow the checker naming convention.
- Overrides:
createFlowAnalysis
in classCalledMethodsAnnotatedTypeFactory
- Returns:
- the appropriate flow analysis class that is used for the org.checkerframework.dataflow analysis
-
getMustCallAnnotation
Retrieves the@MustCall
annotation for the given object, which can be either anElement
or aTree
. This method delegates to theMustCallAnnotatedTypeFactory
to get the annotated type of the input object and then extracts the primary@MustCall
annotation from it.- Parameters:
obj
- the object for which to retrieve the@MustCall
annotation. Must be either an instance ofElement
orTree
.- Returns:
- the
@MustCall
annotation if present, null otherwise - Throws:
IllegalArgumentException
- if the input object type is not supported
-
hasEmptyMustCallValue
Returns whether theMustCall.value()
element/argument of the @MustCall annotation on the type oftree
is definitely empty.This method only considers the declared type: it does not consider flow-sensitive refinement.
- Parameters:
tree
- a tree- Returns:
- true if the Must Call type is non-empty or top
-
hasEmptyMustCallValue
Returns whether theMustCall.value()
element/argument of the @MustCall annotation on the type ofelement
is definitely empty.This method only considers the declared type: it does not consider flow-sensitive refinement.
- Parameters:
element
- an element- Returns:
- true if the Must Call type is non-empty or top
-
getMustCallValues
Returns theMustCall.value()
element/argument of the @MustCall annotation on the class type ofelement
. If there is no such annotation, returns the empty list.Do not use this method to get the MustCall values of an
MustCallConsistencyAnalyzer.Obligation
. Instead, useMustCallConsistencyAnalyzer.Obligation.getMustCallMethods(RLCCalledMethodsAnnotatedTypeFactory, CFStore)
.Do not call
List.isEmpty()
on the result of this method: prefer to callhasEmptyMustCallValue(Element)
, which correctly accounts for @MustCallUnknown, instead.- Parameters:
element
- an element- Returns:
- the strings in its must-call type
-
getMustCallValues
Helper method for getting the must-call values from a must-call annotation.- Parameters:
mustCallAnnotation
- aMustCall
annotation, or null- Returns:
- the strings in mustCallAnnotation's value element, or the empty list if mustCallAnnotation is null
-
getTempVarForNode
Helper method to get the temporary variable that represents the given node, if one exists.- Parameters:
node
- a node- Returns:
- the tempvar for node's expression, or null if one does not exist
-
isTempVar
Is the given node a temporary variable?- Parameters:
node
- a node- Returns:
- true iff the given node is a temporary variable
-
getTreeForTempVar
Gets the tree for a temporary variable- Parameters:
node
- a node for a temporary variable- Returns:
- the tree for
node
-
addTempVar
Registers a temporary variable by adding it to this type factory's tempvar map.- Parameters:
tmpVar
- a temporary variabletree
- the tree of the expression the tempvar represents
-
declaredTypeHasMustCall
Returns true if the type of the tree includes a must-call annotation. Note that this method may not consider dataflow, and is only safe to use when you need the declared, rather than inferred, type of the tree.Do not use this method if you are trying to get the must-call obligations of the resource aliases of an
MustCallConsistencyAnalyzer.Obligation
. Instead, useMustCallConsistencyAnalyzer.Obligation.getMustCallMethods(ResourceLeakAnnotatedTypeFactory, CFStore)
.- Parameters:
tree
- a tree- Returns:
- whether the tree has declared must-call obligations
-
hasMustCallAlias
Returns true if the given tree has anMustCallAlias
annotation and resource-alias tracking is not disabled.- Parameters:
tree
- a tree- Returns:
- true if the given tree has an
MustCallAlias
annotation
-
hasMustCallAlias
Returns true if the given element has anMustCallAlias
annotation and resource-alias tracking is not disabled.- Parameters:
elt
- an element- Returns:
- true if the given element has an
MustCallAlias
annotation
-
hasCreatesMustCallFor
Returns true if the declaration of the method being invoked has one or moreCreatesMustCallFor
annotations.- Parameters:
node
- a method invocation node- Returns:
- true iff there is one or more @CreatesMustCallFor annotations on the declaration of the invoked method
-
canCreateObligations
public boolean canCreateObligations()Does this type factory supportCreatesMustCallFor
?- Returns:
- true iff the -AnoCreatesMustCallFor command-line argument was not supplied to the checker
-
getTypeFactoryOfSubcheckerOrNull
public <T extends GenericAnnotatedTypeFactory<?,?, @Nullable T getTypeFactoryOfSubcheckerOrNull?, ?>> (Class<? extends SourceChecker> subCheckerClass) Description copied from class:GenericAnnotatedTypeFactory
Returns the type factory used by a subchecker. Returns null if no matching subchecker was found or if the type factory is null. The caller must know the exact checker class to request.Because the visitor path is copied, call this method each time a subfactory is needed rather than store the returned subfactory in a field.
- Overrides:
getTypeFactoryOfSubcheckerOrNull
in classGenericAnnotatedTypeFactory<AccumulationValue,
AccumulationStore, AccumulationTransfer, AccumulationAnalysis> - Type Parameters:
T
- the type ofsubCheckerClass
'sAnnotatedTypeFactory
- Parameters:
subCheckerClass
- the exact class of the subchecker- Returns:
- the AnnotatedTypeFactory of the subchecker or null if no subchecker exists
- See Also:
-
getEnsuresCalledMethodsListValueElement
Returns theEnsuresCalledMethods.List.value()
element.- Returns:
- the
EnsuresCalledMethods.List.value()
element
-
getCreatesMustCallForValueElement
Returns theCreatesMustCallFor.value()
element.- Specified by:
getCreatesMustCallForValueElement
in interfaceCreatesMustCallForElementSupplier
- Returns:
- the
CreatesMustCallFor.value()
element
-
getCreatesMustCallForListValueElement
Returns theCreatesMustCallFor.List.value()
element.- Specified by:
getCreatesMustCallForListValueElement
in interfaceCreatesMustCallForElementSupplier
- Returns:
- the
CreatesMustCallFor.List.value()
element
-
hasNotOwning
Does the given element have an@NotOwning
annotation (including in stub files)?Prefer this method to calling
AnnotatedTypeFactory.getDeclAnnotation(Element, Class)
on the type factory directly, which won't find this annotation in stub files (it only considers stub files loaded by this checker, not subcheckers).- Parameters:
elt
- an element- Returns:
- whether there is a NotOwning annotation on the given element
-
hasOwning
Does the given element have an@Owning
annotation (including in stub files)?Prefer this method to calling
AnnotatedTypeFactory.getDeclAnnotation(Element, Class)
on the type factory directly, which won't find this annotation in stub files (it only considers stub files loaded by this checker, not subcheckers).- Parameters:
elt
- an element- Returns:
- whether there is an Owning annotation on the given element
-
getExceptionalPostconditions
public Set<EnsuresCalledMethodOnExceptionContract> getExceptionalPostconditions(ExecutableElement methodOrConstructor) Description copied from class:CalledMethodsAnnotatedTypeFactory
Get the exceptional postconditions for the given method from theEnsuresCalledMethodsOnException
annotations on it.- Overrides:
getExceptionalPostconditions
in classCalledMethodsAnnotatedTypeFactory
- Parameters:
methodOrConstructor
- the method to examine- Returns:
- the exceptional postconditions on the given method; the return value is newly-allocated and can be freely modified by callers
-
isIgnoredExceptionType
Returns true if the checker should ignore exceptional control flow due to the given exception type.- Overrides:
isIgnoredExceptionType
in classCalledMethodsAnnotatedTypeFactory
- Parameters:
exceptionType
- exception type- Returns:
true
ifexceptionType
is a member ofCalledMethodsAnalysis.ignoredExceptionTypes
,false
otherwise
-
getInput
Fetches the transfer input for the given block, either from the flowResult, if the analysis is still running, or else from the analysis itself.- Parameters:
block
- a block- Returns:
- the appropriate TransferInput from the results of running dataflow
-