Class AbstractReturnValueIgnored
java.lang.Object
com.google.errorprone.bugpatterns.BugChecker
com.google.errorprone.bugpatterns.AbstractReturnValueIgnored
- All Implemented Interfaces:
BugChecker.MemberReferenceTreeMatcher
,BugChecker.MethodInvocationTreeMatcher
,BugChecker.NewClassTreeMatcher
,BugChecker.ReturnTreeMatcher
,ResultUsePolicyAnalyzer<com.sun.source.tree.ExpressionTree,
,VisitorState> Suppressible
,Serializable
- Direct Known Subclasses:
CheckReturnValue
,FutureReturnValueIgnored
,IgnoredPureGetter
,ProtoBuilderReturnValueIgnored
,RectIntersectReturnValueIgnored
,ReturnValueIgnored
,RxReturnValueIgnored
public abstract class AbstractReturnValueIgnored
extends BugChecker
implements BugChecker.MethodInvocationTreeMatcher, BugChecker.MemberReferenceTreeMatcher, BugChecker.ReturnTreeMatcher, BugChecker.NewClassTreeMatcher, ResultUsePolicyAnalyzer<com.sun.source.tree.ExpressionTree,VisitorState>
An abstract base class to match API usages in which the return value is not used.
In addition to regular contexts in which a return value isn't used (e.g.: the result of
String.trim()
is just ignored), this class has the capacity to determine if the result is cast
in such a way as to lose important static type information.
If an analysis extending this base class chooses to care about this circumstance, they can
override lostType(com.google.errorprone.VisitorState)
to define the type information they wish to keep.
- Author:
- eaftan@google.com (Eddie Aftandilian)
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class com.google.errorprone.bugpatterns.BugChecker
BugChecker.AnnotatedTypeTreeMatcher, BugChecker.AnnotationTreeMatcher, BugChecker.ArrayAccessTreeMatcher, BugChecker.ArrayTypeTreeMatcher, BugChecker.AssertTreeMatcher, BugChecker.AssignmentTreeMatcher, BugChecker.BinaryTreeMatcher, BugChecker.BlockTreeMatcher, BugChecker.BreakTreeMatcher, BugChecker.CaseTreeMatcher, BugChecker.CatchTreeMatcher, BugChecker.ClassTreeMatcher, BugChecker.CompilationUnitTreeMatcher, BugChecker.CompoundAssignmentTreeMatcher, BugChecker.ConditionalExpressionTreeMatcher, BugChecker.ContinueTreeMatcher, BugChecker.DoWhileLoopTreeMatcher, BugChecker.EmptyStatementTreeMatcher, BugChecker.EnhancedForLoopTreeMatcher, BugChecker.ExpressionStatementTreeMatcher, BugChecker.ForLoopTreeMatcher, BugChecker.IdentifierTreeMatcher, BugChecker.IfTreeMatcher, BugChecker.ImportTreeMatcher, BugChecker.InstanceOfTreeMatcher, BugChecker.IntersectionTypeTreeMatcher, BugChecker.LabeledStatementTreeMatcher, BugChecker.LambdaExpressionTreeMatcher, BugChecker.LiteralTreeMatcher, BugChecker.MemberReferenceTreeMatcher, BugChecker.MemberSelectTreeMatcher, BugChecker.MethodInvocationTreeMatcher, BugChecker.MethodTreeMatcher, BugChecker.ModifiersTreeMatcher, BugChecker.NewArrayTreeMatcher, BugChecker.NewClassTreeMatcher, BugChecker.ParameterizedTypeTreeMatcher, BugChecker.ParenthesizedTreeMatcher, BugChecker.PrimitiveTypeTreeMatcher, BugChecker.ReturnTreeMatcher, BugChecker.SuppressibleTreePathScanner<R,
P>, BugChecker.SwitchTreeMatcher, BugChecker.SynchronizedTreeMatcher, BugChecker.ThrowTreeMatcher, BugChecker.TryTreeMatcher, BugChecker.TypeCastTreeMatcher, BugChecker.TypeParameterTreeMatcher, BugChecker.UnaryTreeMatcher, BugChecker.UnionTypeTreeMatcher, BugChecker.VariableTreeMatcher, BugChecker.WhileLoopTreeMatcher, BugChecker.WildcardTreeMatcher -
Constructor Summary
ModifierConstructorDescriptionprotected
protected
AbstractReturnValueIgnored
(ConstantExpressions constantExpressions) -
Method Summary
Modifier and TypeMethodDescriptionprotected boolean
Override this to return false to forbid discarding return values in testers that are testing whether an exception is thrown.protected Description
describeReturnValueIgnored
(com.sun.source.tree.MemberReferenceTree memberReferenceTree, VisitorState state) Uses the default description for results ignored via a method reference.protected Description
describeReturnValueIgnored
(com.sun.source.tree.MethodInvocationTree methodInvocationTree, VisitorState state) Fixes the error by assigning the result of the call to the receiver reference, or deleting the method call.protected Description
describeReturnValueIgnored
(com.sun.source.tree.NewClassTree newClassTree, VisitorState state) Uses the default description for results ignored via a constructor call.protected String
getMessage
(Name name) Returns the diagnostic message.getMethodPolicy
(com.sun.source.tree.ExpressionTree expression, VisitorState state) Returns theResultUsePolicy
for the method used in the givenexpression
.boolean
isCovered
(com.sun.source.tree.ExpressionTree tree, VisitorState state) Returns whether this checker makes any determination about whether the given expression's return value should be used or not.protected Optional
<com.sun.tools.javac.code.Type> lostType
(VisitorState state) Check for occurrences of this type being lost, i.e.protected String
lostTypeMessage
(String returnedType, String declaredReturnType) matchMemberReference
(com.sun.source.tree.MemberReferenceTree tree, VisitorState state) matchMethodInvocation
(com.sun.source.tree.MethodInvocationTree methodInvocationTree, VisitorState state) matchNewClass
(com.sun.source.tree.NewClassTree newClassTree, VisitorState state) matchReturn
(com.sun.source.tree.ReturnTree tree, VisitorState state) Returning a type from a lambda or method that returns Object loses the type information.protected abstract Matcher
<? super com.sun.source.tree.ExpressionTree> Match whatever additional conditions concrete subclasses want to match (a list of known side-effect-free methods, has a @CheckReturnValue annotation, etc.).Methods inherited from class com.google.errorprone.bugpatterns.BugChecker
allNames, buildDescription, buildDescription, buildDescription, canonicalName, customSuppressionAnnotations, defaultSeverity, describeMatch, describeMatch, describeMatch, describeMatch, describeMatch, describeMatch, disableable, equals, hashCode, isSuppressed, isSuppressed, isSuppressed, isSuppressed, linkUrl, message, supportsSuppressWarnings, suppressedByAnyOf, suppressedRegions
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface com.google.errorprone.bugpatterns.checkreturnvalue.ResultUsePolicyAnalyzer
allNames, canonicalName, getMatchMetadata
Methods inherited from interface com.google.errorprone.matchers.Suppressible
allNames, canonicalName, customSuppressionAnnotations, supportsSuppressWarnings, suppressedByAnyOf
-
Constructor Details
-
AbstractReturnValueIgnored
protected AbstractReturnValueIgnored() -
AbstractReturnValueIgnored
-
-
Method Details
-
matchMethodInvocation
public Description matchMethodInvocation(com.sun.source.tree.MethodInvocationTree methodInvocationTree, VisitorState state) - Specified by:
matchMethodInvocation
in interfaceBugChecker.MethodInvocationTreeMatcher
-
matchNewClass
- Specified by:
matchNewClass
in interfaceBugChecker.NewClassTreeMatcher
-
matchMemberReference
public Description matchMemberReference(com.sun.source.tree.MemberReferenceTree tree, VisitorState state) - Specified by:
matchMemberReference
in interfaceBugChecker.MemberReferenceTreeMatcher
-
isCovered
Description copied from interface:ResultUsePolicyAnalyzer
Returns whether this checker makes any determination about whether the given expression's return value should be used or not. Most checkers either determine that an expression is CRV or make no determination.- Specified by:
isCovered
in interfaceResultUsePolicyAnalyzer<com.sun.source.tree.ExpressionTree,
VisitorState>
-
getMethodPolicy
public ResultUsePolicy getMethodPolicy(com.sun.source.tree.ExpressionTree expression, VisitorState state) Description copied from interface:ResultUsePolicyAnalyzer
Returns theResultUsePolicy
for the method used in the givenexpression
.- Specified by:
getMethodPolicy
in interfaceResultUsePolicyAnalyzer<com.sun.source.tree.ExpressionTree,
VisitorState>
-
specializedMatcher
Match whatever additional conditions concrete subclasses want to match (a list of known side-effect-free methods, has a @CheckReturnValue annotation, etc.). -
lostType
Check for occurrences of this type being lost, i.e. cast toObject
. -
lostTypeMessage
-
allowInExceptionThrowers
protected boolean allowInExceptionThrowers()Override this to return false to forbid discarding return values in testers that are testing whether an exception is thrown. -
describeReturnValueIgnored
protected Description describeReturnValueIgnored(com.sun.source.tree.MethodInvocationTree methodInvocationTree, VisitorState state) Fixes the error by assigning the result of the call to the receiver reference, or deleting the method call. Subclasses may override if they prefer a different description. -
describeReturnValueIgnored
protected Description describeReturnValueIgnored(com.sun.source.tree.MemberReferenceTree memberReferenceTree, VisitorState state) Uses the default description for results ignored via a method reference. Subclasses may override if they prefer a different description. -
describeReturnValueIgnored
protected Description describeReturnValueIgnored(com.sun.source.tree.NewClassTree newClassTree, VisitorState state) Uses the default description for results ignored via a constructor call. Subclasses may override if they prefer a different description. -
getMessage
-
matchReturn
Returning a type from a lambda or method that returns Object loses the type information.- Specified by:
matchReturn
in interfaceBugChecker.ReturnTreeMatcher
-