Class NoReflection
- All Implemented Interfaces:
com.google.errorprone.bugpatterns.BugChecker.MemberReferenceTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.MethodInvocationTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.NewClassTreeMatcher, com.google.errorprone.matchers.Suppressible, Serializable
A method reference is matched as well as a call, and a constructor as well as a method: Class::getDeclaredMethods
handed to a map is the lookup deferred, and new EnumMap<>(type) fills the enum constants of the type as surely
as EnumSet.noneOf does. What the build allows and forbids comes from the flags declared on
ReflectionCategory. A report links to the section of the guide saying what the call does and which cache it
fills.
A single call can still be allowed where nothing else will do, with a suppression on the local variable that holds what the platform returned rather than on the method, so that the rest of the method stays checked:
public Method getMethod() {
// getMethod returns a java.lang.reflect.Method, which only the platform can produce
@SuppressWarnings("NoReflection")
Method target = context.getExecutableMethod().getTargetMethod();
return target;
}
The check decides suppression itself rather than leaving it to ErrorProne, so that a build can stop honouring it with
ReflectionCategory.SUPPRESSIBLE_FLAG for this check alone - ErrorProne's option to ignore suppression
annotations would do it for every check at once.
- Since:
- 1.0.0
- Author:
- Denis Stepanov
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class com.google.errorprone.bugpatterns.BugChecker
com.google.errorprone.bugpatterns.BugChecker.AnnotatedTypeTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.AnnotationTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.ArrayAccessTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.ArrayTypeTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.AssertTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.AssignmentTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.BinaryTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.BindingPatternTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.BlockTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.BreakTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.CaseTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.CatchTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.ClassTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.CompilationUnitTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.CompoundAssignmentTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.ConditionalExpressionTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.ConstantCaseLabelTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.ContinueTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.DeconstructionPatternTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.DefaultCaseLabelTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.DoWhileLoopTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.EmptyStatementTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.EnhancedForLoopTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.ExportsTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.ExpressionStatementTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.ForLoopTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.IdentifierTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.IfTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.ImportTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.InstanceOfTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.IntersectionTypeTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.LabeledStatementTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.LambdaExpressionTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.LiteralTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.MemberReferenceTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.MemberSelectTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.MethodInvocationTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.MethodTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.ModifiersTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.ModuleTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.NewArrayTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.NewClassTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.OpensTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.PackageTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.ParameterizedTypeTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.ParenthesizedTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.PatternCaseLabelTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.PrimitiveTypeTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.ProvidesTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.RequiresTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.ReturnTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.SuppressibleTreePathScanner<R,P>, com.google.errorprone.bugpatterns.BugChecker.SwitchExpressionTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.SwitchTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.SynchronizedTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.ThrowTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.TryTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.TypeCastTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.TypeParameterTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.UnaryTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.UnionTypeTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.UsesTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.VariableTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.WhileLoopTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.WildcardTreeMatcher, com.google.errorprone.bugpatterns.BugChecker.YieldTreeMatcher -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringThe flag naming the categories allowed throughout the project, separated by commas. -
Constructor Summary
ConstructorsConstructorDescriptionForbids every category everywhere, and honours a suppression.NoReflection(com.google.errorprone.ErrorProneFlags flags) -
Method Summary
Modifier and TypeMethodDescriptioncom.google.errorprone.matchers.DescriptionmatchMemberReference(MemberReferenceTree tree, com.google.errorprone.VisitorState state) com.google.errorprone.matchers.DescriptionmatchMethodInvocation(MethodInvocationTree tree, com.google.errorprone.VisitorState state) com.google.errorprone.matchers.DescriptionmatchNewClass(NewClassTree tree, com.google.errorprone.VisitorState state) Methods inherited from class com.google.errorprone.bugpatterns.BugChecker
allNames, buildDescription, buildDescription, buildDescription, buildDescription, canonicalName, customSuppressionAnnotations, defaultSeverity, describeMatch, describeMatch, describeMatch, describeMatch, describeMatch, describeMatch, describeMatch, describeMatch, disableable, equals, hashCode, isSuppressed, isSuppressed, linkUrl, message, supportsSuppressWarnings, suppressedByAnyOf, suppressedRegionsMethods inherited from class Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface com.google.errorprone.matchers.Suppressible
allNames, canonicalName, customSuppressionAnnotations, supportsSuppressWarnings, suppressedByAnyOf
-
Field Details
-
ALLOWED_FLAG
The flag naming the categories allowed throughout the project, separated by commas.- See Also:
-
-
Constructor Details
-
NoReflection
public NoReflection()Forbids every category everywhere, and honours a suppression. -
NoReflection
@Inject public NoReflection(com.google.errorprone.ErrorProneFlags flags) - Parameters:
flags- The flags naming what the build allows and forbids, and whether a suppression is honoured
-
-
Method Details
-
matchMethodInvocation
public com.google.errorprone.matchers.Description matchMethodInvocation(MethodInvocationTree tree, com.google.errorprone.VisitorState state) - Specified by:
matchMethodInvocationin interfacecom.google.errorprone.bugpatterns.BugChecker.MethodInvocationTreeMatcher
-
matchMemberReference
public com.google.errorprone.matchers.Description matchMemberReference(MemberReferenceTree tree, com.google.errorprone.VisitorState state) - Specified by:
matchMemberReferencein interfacecom.google.errorprone.bugpatterns.BugChecker.MemberReferenceTreeMatcher
-
matchNewClass
public com.google.errorprone.matchers.Description matchNewClass(NewClassTree tree, com.google.errorprone.VisitorState state) - Specified by:
matchNewClassin interfacecom.google.errorprone.bugpatterns.BugChecker.NewClassTreeMatcher
-