Class UnreadFields
- All Implemented Interfaces:
Detector, Priorities, org.apache.bcel.classfile.Visitor
-
Nested Class Summary
Nested classes/interfaces inherited from class OpcodeStackDetector
OpcodeStackDetector.WithCustomJumpInfo -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final Map<String, List<BugAnnotation>> private final BugAccumulatorprivate final BugReporter(package private) int(package private) UnreadFieldsDataprivate static final boolean(package private) static final int(package private) static Pattern(package private) final ClassDescriptor(package private) boolean(package private) booleanprivate final ClassDescriptor(package private) XFieldprivate intprivate int(package private) booleanprivate 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 PatternFields inherited from class OpcodeStackDetector
stackFields inherited from class DismantleBytecode
codeBytes, lineNumberTable, M_BR, M_CP, M_INT, M_PAD, M_R, M_UINTFields inherited from interface Priorities
EXP_PRIORITY, HIGH_PRIORITY, IGNORE_PRIORITY, LOW_PRIORITY, NORMAL_PRIORITY -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate BugInstanceaddClassFieldAndAccess(BugInstance instance, XField f) static booleanclassHasParameter(org.apache.bcel.classfile.JavaClass obj) static booleancontainsSpecialAnnotation(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.booleanDeprecated.Deprecated.UseUnreadFieldsData.getReadFields()insteadDeprecated.UseUnreadFieldsData.getWrittenFields()insteadbooleanDeprecated.UseUnreadFieldsData.isContainerField(XField)insteadprivate booleanstatic booleanisInjectionAttribute(String annotationClass) booleanDeprecated.UseUnreadFieldsData.isReflexive(XField)insteadstatic booleanisSeleniumWebElement(String signature) booleanDeprecated.booleanDeprecated.UseUnreadFieldsData.isWrittenInConstructor(XField)insteadbooleanDeprecated.voidreport()This method is called after all classes to be visited.voidsawOpcode(int seen) By default, this method will not be called when stack is TOP.voidDeprecated.voidvisit(org.apache.bcel.classfile.Code obj) voidvisit(org.apache.bcel.classfile.ConstantValue obj) voidvisit(org.apache.bcel.classfile.Field obj) voidvisit(org.apache.bcel.classfile.JavaClass obj) voidvisit(org.apache.bcel.classfile.Method obj) voidvisitAfter(org.apache.bcel.classfile.JavaClass obj) voidvisitAnnotation(String annotationClass, Map<String, org.apache.bcel.classfile.ElementValue> map, boolean runtimeVisible) Visit annotation on a class, field or methodMethods inherited from class OpcodeStackDetector
afterOpcode, beforeOpcode, getStack, isUsingCustomUserValue, visitCodeMethods inherited from class BytecodeScanningDetector
getClassContext, shouldVisitCode, visitClassContextMethods inherited from class 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, sawStringMethods inherited from class AnnotationVisitor
getAnnotationParameterAsEnum, getAnnotationParameterAsString, getAnnotationParameterAsStringArray, visitAnnotation, visitParameterAnnotation, visitParameterAnnotation, visitSyntheticParameterAnnotationMethods inherited from class 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, visitStackMapEntryMethods inherited from class 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, visitUnknownMethods inherited from class Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods 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:
visitin classBetterVisitor
-
classHasParameter
public static boolean classHasParameter(org.apache.bcel.classfile.JavaClass obj) -
visitAfter
public void visitAfter(org.apache.bcel.classfile.JavaClass obj) - Overrides:
visitAfterin classPreorderVisitor
-
visit
public void visit(org.apache.bcel.classfile.Field obj) - Overrides:
visitin classBetterVisitor
-
isSeleniumWebElement
-
visitAnnotation
public void visitAnnotation(String annotationClass, Map<String, org.apache.bcel.classfile.ElementValue> map, boolean runtimeVisible) Description copied from class:AnnotationVisitorVisit annotation on a class, field or method- Overrides:
visitAnnotationin 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:
visitin classBetterVisitor
-
visit
public void visit(org.apache.bcel.classfile.Code obj) - Overrides:
visitin classDismantleBytecode
-
visit
public void visit(org.apache.bcel.classfile.Method obj) - Overrides:
visitin classBetterVisitor
-
sawOpcode
public void sawOpcode(int seen) Description copied from class:OpcodeStackDetectorBy 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:
sawOpcodein 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:DetectorThis 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:
reportin interfaceDetector- Overrides:
reportin 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