@RelevantJavaTypes(value={java.lang.Byte.class,java.lang.Short.class,java.lang.Integer.class,java.lang.Long.class,java.lang.Character.class,byte.class,short.class,int.class,long.class,char.class}) @SuppressWarningsPrefix(value={"index","upperbound"}) public class UpperBoundChecker extends BaseTypeChecker
Modifier and Type | Field and Description |
---|---|
@MonotonicNonNull ExecutableElement |
ltEqLengthOfValueElement
The LTEqLengthOf.value argument/element.
|
@MonotonicNonNull ExecutableElement |
ltLengthOfOffsetElement
The LTLengthOf.offset argument/element.
|
@MonotonicNonNull ExecutableElement |
ltLengthOfValueElement
The LTLengthOf.value argument/element.
|
@MonotonicNonNull ExecutableElement |
ltOMLengthOfValueElement
The LTOMLengthOf.value argument/element.
|
@MonotonicNonNull ExecutableElement |
substringIndexForOffsetElement
The SubstringIndexFor.offset argument/element.
|
@MonotonicNonNull ExecutableElement |
substringIndexForValueElement
The SubstringIndexFor.value argument/element.
|
@MonotonicNonNull ExecutableElement |
upperBoundLiteralValueElement
The UpperBoundLiteral.value element/field.
|
currentRoot, DETAILS_SEPARATOR, elementsWithSuppressedWarnings, errsOnLastExit, javacErrored, messager, messagesProperties, MSGS_FILE, OPTION_SEPARATOR, parentChecker, SUPPRESS_ALL_MESSAGE_KEY, SUPPRESS_ALL_PREFIX, trees, UNNEEDED_SUPPRESSION_KEY, upstreamCheckerNames, useAllcheckersPrefix, visitor
processingEnv
Constructor and Description |
---|
UpperBoundChecker()
Create a new UpperBoundChecker.
|
Modifier and Type | Method and Description |
---|---|
protected LinkedHashSet<Class<? extends BaseTypeChecker>> |
getImmediateSubcheckerClasses()
Returns the set of subchecker classes on which this checker depends.
|
void |
initChecker()
Initialize the checker.
|
boolean |
shouldSkipUses(@FullyQualifiedName String typeName)
Tests whether the class owner of the passed type matches the pattern specified in the
checker.skipUses property. |
createSourceVisitor, createSourceVisitorPublic, getAnnotationProvider, getExtraStubFiles, getOptions, getOptionsNoSubcheckers, getRelatedClassName, getSubchecker, getSubcheckers, getSupportedLintOptions, getSupportedOptions, getSuppressWarningsPrefixesOfSubcheckers, getTreePathCacher, getTypeFactory, getTypeFactoryOfSubchecker, getUltimateParentChecker, getVisitor, hasOptionNoSubcheckers, invokeConstructorFor, printOrStoreMessage, processArg, reportJavacError, setRoot, shouldAddShutdownHook, shouldResolveReflection, shutdownHook, typeProcess, typeProcessingOver, warnUnneededSuppressions
addOptions, createSupportedLintOptions, expandCFOptions, fullMessageOf, getBooleanOption, getBooleanOption, getElementUtils, getLintOption, getLintOption, getMessagesProperties, getOption, getOption, getOptionConfiguration, getParentChecker, getPathToCompilationUnit, getProcessingEnvironment, getProperties, getStandardSuppressWarningsPrefixes, getSupportedAnnotationTypes, getSupportedSourceVersion, getSuppressWarningsPrefixes, getTreeUtils, getTypeUtils, getUpstreamCheckerNames, hasOption, init, message, message, printOrStoreMessage, printStats, report, reportError, reportWarning, setLintOption, setParentChecker, setProcessingEnvironment, setSupportedLintOptions, shouldSkipDefs, shouldSkipDefs, shouldSkipUses, shouldSuppressWarnings, shouldSuppressWarnings, typeProcessingStart, useConservativeDefault, warnUnneededSuppressions
getCompilerLog, process
getCompletions, isInitialized
public @MonotonicNonNull ExecutableElement substringIndexForValueElement
public @MonotonicNonNull ExecutableElement substringIndexForOffsetElement
public @MonotonicNonNull ExecutableElement ltLengthOfValueElement
public @MonotonicNonNull ExecutableElement ltLengthOfOffsetElement
public @MonotonicNonNull ExecutableElement ltEqLengthOfValueElement
public @MonotonicNonNull ExecutableElement ltOMLengthOfValueElement
public @MonotonicNonNull ExecutableElement upperBoundLiteralValueElement
public void initChecker()
SourceChecker
initChecker
in class BaseTypeChecker
AbstractProcessor.init(ProcessingEnvironment)
public boolean shouldSkipUses(@FullyQualifiedName String typeName)
SourceChecker
checker.skipUses
property. In contrast to SourceChecker.shouldSkipUses(Element)
this version can
also be used from primitive types, which don't have an element.
Checkers that require their annotations not to be checked on certain JDK classes may
override this method to skip them. They shall call super.shouldSkipUses(typeName)
to
also skip the classes matching the pattern.
shouldSkipUses
in class SourceChecker
typeName
- the fully-qualified name of a typeprotected LinkedHashSet<Class<? extends BaseTypeChecker>> getImmediateSubcheckerClasses()
BaseTypeChecker
Subclasses should override this method to specify subcheckers. If they do so, they should call the super implementation of this method and add dependencies to the returned set so that checkers required for reflection resolution are included if reflection resolution is requested.
Each subchecker of this checker may also depend on other checkers. If this checker and one of its subcheckers both depend on a third checker, that checker will only be instantiated once.
Though each checker is run on a whole compilation unit before the next checker is run, error
and warning messages are collected and sorted based on the location in the source file before
being printed. (See BaseTypeChecker.printOrStoreMessage(Diagnostic.Kind, String, Tree,
CompilationUnitTree)
.)
WARNING: Circular dependencies are not supported nor do checkers verify that their dependencies are not circular. Make sure no circular dependencies are created when overriding this method. (In other words, if checker A depends on checker B, checker B cannot depend on checker A.)
This method is protected so it can be overridden, but it should only be called internally by the BaseTypeChecker.
The BaseTypeChecker will not modify the list returned by this method, but other clients do modify the list.
getImmediateSubcheckerClasses
in class BaseTypeChecker