Package edu.umd.cs.findbugs.detect
Class UnreadFields
- All Implemented Interfaces:
Detector
,Priorities
,org.apache.bcel.classfile.Visitor
-
Nested Class Summary
Nested classes/interfaces inherited from class edu.umd.cs.findbugs.bcel.OpcodeStackDetector
OpcodeStackDetector.WithCustomJumpInfo
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final Map
<String, List<BugAnnotation>> private final BugAccumulator
private final BugReporter
(package private) int
(package private) UnreadFieldsData
private static final boolean
(package private) static final int
(package private) static Pattern
(package private) final ClassDescriptor
(package private) boolean
(package private) boolean
private final ClassDescriptor
(package private) XField
private int
private int
(package private) boolean
private static final List
<ClassDescriptor> A list of annotations for fields that might be read by frameworks, even though they are private(package private) final ClassDescriptor
(package private) int
(package private) boolean
(package private) boolean
(package private) boolean
(package private) final ClassDescriptor
(package private) static Pattern
Fields inherited from class edu.umd.cs.findbugs.bcel.OpcodeStackDetector
stack
Fields inherited from class edu.umd.cs.findbugs.visitclass.DismantleBytecode
codeBytes, lineNumberTable, M_BR, M_CP, M_INT, M_PAD, M_R, M_UINT
Fields inherited from interface edu.umd.cs.findbugs.Priorities
EXP_PRIORITY, HIGH_PRIORITY, IGNORE_PRIORITY, LOW_PRIORITY, NORMAL_PRIORITY
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate BugInstance
addClassFieldAndAccess
(BugInstance instance, XField f) static boolean
classHasParameter
(org.apache.bcel.classfile.JavaClass obj) static boolean
containsSpecialAnnotation
(Collection<AnnotationValue> annotationsToCheck) Checks whether the collection of annotations associated with a given element include annotations that indicate the "URF_UNREAD_FIELD" detector should be skipped.boolean
Deprecated.Deprecated.UseUnreadFieldsData.getReadFields()
insteadDeprecated.UseUnreadFieldsData.getWrittenFields()
insteadboolean
Deprecated.UseUnreadFieldsData.isContainerField(XField)
insteadprivate boolean
static boolean
isInjectionAttribute
(String annotationClass) boolean
Deprecated.UseUnreadFieldsData.isReflexive(XField)
insteadstatic boolean
isSeleniumWebElement
(String signature) boolean
Deprecated.boolean
Deprecated.UseUnreadFieldsData.isWrittenInConstructor(XField)
insteadboolean
Deprecated.void
report()
This method is called after all classes to be visited.void
sawOpcode
(int seen) By default, this method will not be called when stack is TOP.void
Deprecated.void
visit
(org.apache.bcel.classfile.Code obj) void
visit
(org.apache.bcel.classfile.ConstantValue obj) void
visit
(org.apache.bcel.classfile.Field obj) void
visit
(org.apache.bcel.classfile.JavaClass obj) void
visit
(org.apache.bcel.classfile.Method obj) void
visitAfter
(org.apache.bcel.classfile.JavaClass obj) void
visitAnnotation
(String annotationClass, Map<String, org.apache.bcel.classfile.ElementValue> map, boolean runtimeVisible) Visit annotation on a class, field or methodMethods inherited from class edu.umd.cs.findbugs.bcel.OpcodeStackDetector
afterOpcode, beforeOpcode, getStack, isUsingCustomUserValue, visitCode
Methods inherited from class edu.umd.cs.findbugs.BytecodeScanningDetector
getClassContext, shouldVisitCode, visitClassContext
Methods inherited from class edu.umd.cs.findbugs.visitclass.DismantleBytecode
areOppositeBranches, atCatchBlock, getBranchFallThrough, getBranchOffset, getBranchTarget, getClassConstantOperand, getClassDescriptorOperand, getCodeByte, getConstantRefOperand, getDefaultSwitchOffset, getDottedClassConstantOperand, getFieldDescriptorOperand, getIntConstant, getLongConstant, getMaxPC, getMethodDescriptorOperand, getNameConstantOperand, getNextCodeByte, getNextOpcode, getNextPC, getOpcode, getPC, getPrevOpcode, getRefConstantOperand, getRefFieldIsStatic, getRegisterOperand, getSigConstantOperand, getStringConstantOperand, getSwitchLabels, getSwitchOffsets, getXClassOperand, getXFieldOperand, getXMethodOperand, isBranch, isMethodCall, isRegisterLoad, isRegisterStore, isRegisterStore, isReturn, isShift, isSwitch, isWideOpcode, printOpCode, sawBranchTo, sawClass, sawDouble, sawField, sawFloat, sawIMethod, sawInt, sawLong, sawMethod, sawRegister, sawString
Methods inherited from class edu.umd.cs.findbugs.visitclass.AnnotationVisitor
getAnnotationParameterAsString, getAnnotationParameterAsStringArray, visitAnnotation, visitParameterAnnotation, visitParameterAnnotation, visitSyntheticParameterAnnotation
Methods inherited from class edu.umd.cs.findbugs.visitclass.PreorderVisitor
amVisitingMainMethod, asUnsignedByte, doVisitMethod, getClassDescriptor, getClassName, getCode, getConstantPool, getDottedClassName, getDottedFieldSig, getDottedMethodSig, getDottedSuperclassName, getField, getFieldDescriptor, getFieldIsStatic, getFieldName, getFieldSig, getFullyQualifiedFieldName, getFullyQualifiedMethodName, getMethod, getMethodDescriptor, getMethodName, getMethodSig, getMethodVisitOrder, getNumberArguments, getNumberMethodArguments, getPackageName, getSizeOfSurroundingTryBlock, getSizeOfSurroundingTryBlock, getSourceFile, getStringFromIndex, getSuperclassName, getSurroundingCaughtExceptions, getSurroundingCaughtExceptions, getSurroundingCaughtExceptionTypes, getSurroundingTryBlock, getSurroundingTryBlock, getThisClass, getXClass, getXField, getXMethod, hasInterestingClass, hasInterestingMethod, isVisitMethodsInCallOrder, setupVisitorForClass, setVisitMethodsInCallOrder, shouldVisit, toString, visitAfter, visitAnnotationDefault, visitAnnotationEntry, visitBootstrapMethods, visitConstantInvokeDynamic, visitConstantMethodHandle, visitConstantMethodType, visitConstantModule, visitConstantPackage, visitConstantPool, visitEnclosingMethod, visitingField, visitingMethod, visitInnerClasses, visitJavaClass, visitLineNumberTable, visitLocalVariableTable, visitMethodParameters, visitParameterAnnotationEntry, visitStackMap, visitStackMapEntry
Methods inherited from class edu.umd.cs.findbugs.visitclass.BetterVisitor
clone, report, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visitCodeException, visitConstantClass, visitConstantDouble, visitConstantFieldref, visitConstantFloat, visitConstantInteger, visitConstantInterfaceMethodref, visitConstantLong, visitConstantMethodref, visitConstantNameAndType, visitConstantString, visitConstantUtf8, visitConstantValue, visitDeprecated, visitExceptionTable, visitField, visitInnerClass, visitLineNumber, visitLocalVariable, visitLocalVariableTypeTable, visitMethod, visitSignature, visitSourceFile, visitSynthetic, visitUnknown
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.apache.bcel.classfile.Visitor
visitConstantDynamic, visitMethodParameter, visitModule, visitModuleExports, visitModuleMainClass, visitModuleOpens, visitModulePackages, visitModuleProvides, visitModuleRequires, visitNestHost, visitNestMembers, visitRecord, visitRecordComponent, visitStackMapType
-
Field Details
-
DEBUG
private static final boolean DEBUG -
INITIALIZER_ANNOTATIONS
-
READ_BY_FRAMEWORK_ANNOTATIONS
A list of annotations for fields that might be read by frameworks, even though they are private -
hasNativeMethods
boolean hasNativeMethods -
isSerializable
boolean isSerializable -
sawSelfCallInConstructor
boolean sawSelfCallInConstructor -
bugReporter
-
bugAccumulator
-
publicOrProtectedConstructor
boolean publicOrProtectedConstructor -
anonymousClassAnnotation
-
junitNestedAnnotation
-
DO_NOT_CONSIDER
static final int DO_NOT_CONSIDER- See Also:
-
externalizable
-
serializable
-
remote
-
count_aload_1
int count_aload_1 -
previousOpcode
private int previousOpcode -
previousPreviousOpcode
private int previousPreviousOpcode -
seenInvokeStatic
boolean seenInvokeStatic -
seenMonitorEnter
boolean seenMonitorEnter -
pendingGetField
XField pendingGetField -
data
UnreadFieldsData data -
saState
int saState -
dontComplainAbout
-
withinAnonymousClass
-
-
Constructor Details
-
UnreadFields
-
-
Method Details
-
isContainerField
Deprecated.UseUnreadFieldsData.isContainerField(XField)
instead -
getReadFields
Deprecated.UseUnreadFieldsData.getReadFields()
instead -
getWrittenFields
Deprecated.UseUnreadFieldsData.getWrittenFields()
instead -
isWrittenOutsideOfInitialization
Deprecated. -
isWrittenDuringInitialization
Deprecated. -
isWrittenInConstructor
Deprecated.UseUnreadFieldsData.isWrittenInConstructor(XField)
instead -
strongEvidenceForIntendedSerialization
Deprecated. -
existsStrongEvidenceForIntendedSerialization
Deprecated. -
visit
public void visit(org.apache.bcel.classfile.JavaClass obj) - Overrides:
visit
in classBetterVisitor
-
classHasParameter
public static boolean classHasParameter(org.apache.bcel.classfile.JavaClass obj) -
visitAfter
public void visitAfter(org.apache.bcel.classfile.JavaClass obj) - Overrides:
visitAfter
in classPreorderVisitor
-
visit
public void visit(org.apache.bcel.classfile.Field obj) - Overrides:
visit
in classBetterVisitor
-
isSeleniumWebElement
-
visitAnnotation
public void visitAnnotation(String annotationClass, Map<String, org.apache.bcel.classfile.ElementValue> map, boolean runtimeVisible) Description copied from class:AnnotationVisitor
Visit annotation on a class, field or method- Overrides:
visitAnnotation
in classAnnotationVisitor
- Parameters:
annotationClass
- class of annotationmap
- map from names to valuesruntimeVisible
- true if annotation is runtime visible
-
isInjectionAttribute
-
visit
public void visit(org.apache.bcel.classfile.ConstantValue obj) - Overrides:
visit
in classBetterVisitor
-
visit
public void visit(org.apache.bcel.classfile.Code obj) - Overrides:
visit
in classDismantleBytecode
-
visit
public void visit(org.apache.bcel.classfile.Method obj) - Overrides:
visit
in classBetterVisitor
-
sawOpcode
public void sawOpcode(int seen) Description copied from class:OpcodeStackDetector
By default, this method will not be called when stack is TOP. To change this behavior, override
#beforeOpcode(int)
and change to return true even if stack is TOP.see Using FindBugs for Research to learn lattice and what TOP means.
- Specified by:
sawOpcode
in classOpcodeStackDetector
- See Also:
-
isInitializerMethod
private boolean isInitializerMethod()- Returns:
- true if the method is considered to be an initializer method. Fields might be initialized outside of a constructor, for instance through JUnit's BeforeEach
-
isReflexive
Deprecated.UseUnreadFieldsData.isReflexive(XField)
instead -
report
public void report()Description copied from interface:Detector
This method is called after all classes to be visited. It should be used by any detectors which accumulate information over all visited classes to generate results.- Specified by:
report
in interfaceDetector
- Overrides:
report
in classBytecodeScanningDetector
-
addClassFieldAndAccess
-
containsSpecialAnnotation
Checks whether the collection of annotations associated with a given element include annotations that indicate the "URF_UNREAD_FIELD" detector should be skipped.- Parameters:
annotationsToCheck
- Collections of annotations associated with given element.- Returns:
- If true, "URF_UNREAD_FIELD" detector should be ignored for given field.
- See Also:
-
UnreadFieldsData.existsStrongEvidenceForIntendedSerialization(ClassDescriptor)
instead