Package edu.umd.cs.findbugs.detect
Class UnreadFields
- java.lang.Object
-
- All Implemented Interfaces:
Detector
,Priorities
,org.apache.bcel.classfile.Visitor
public class UnreadFields extends OpcodeStackDetector
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class edu.umd.cs.findbugs.bcel.OpcodeStackDetector
OpcodeStackDetector.WithCustomJumpInfo
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.Map<java.lang.String,java.util.List<BugAnnotation>>
anonymousClassAnnotation
private BugAccumulator
bugAccumulator
private BugReporter
bugReporter
(package private) int
count_aload_1
(package private) UnreadFieldsData
data
private static boolean
DEBUG
(package private) static int
DO_NOT_CONSIDER
(package private) static java.util.regex.Pattern
dontComplainAbout
(package private) ClassDescriptor
externalizable
(package private) boolean
hasNativeMethods
private static java.util.List<java.lang.String>
INITIALIZER_ANNOTATIONS
(package private) boolean
isSerializable
private ClassDescriptor
junitNestedAnnotation
(package private) XField
pendingGetField
private int
previousOpcode
private int
previousPreviousOpcode
(package private) boolean
publicOrProtectedConstructor
private static java.util.List<ClassDescriptor>
READ_BY_FRAMEWORK_ANNOTATIONS
A list of annotations for fields that might be read by frameworks, even though they are private(package private) ClassDescriptor
remote
(package private) int
saState
(package private) boolean
sawSelfCallInConstructor
(package private) boolean
seenInvokeStatic
(package private) boolean
seenMonitorEnter
(package private) ClassDescriptor
serializable
(package private) static java.util.regex.Pattern
withinAnonymousClass
-
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 Constructor Description UnreadFields(BugReporter bugReporter)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description private BugInstance
addClassFieldAndAccess(BugInstance instance, XField f)
static boolean
classHasParameter(org.apache.bcel.classfile.JavaClass obj)
static boolean
containsSpecialAnnotation(java.util.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
existsStrongEvidenceForIntendedSerialization(ClassDescriptor c)
Deprecated.java.util.Set<? extends XField>
getReadFields()
Deprecated.UseUnreadFieldsData.getReadFields()
insteadjava.util.Set<? extends XField>
getWrittenFields()
Deprecated.UseUnreadFieldsData.getWrittenFields()
insteadboolean
isContainerField(XField f)
Deprecated.UseUnreadFieldsData.isContainerField(XField)
insteadprivate boolean
isInitializerMethod()
static boolean
isInjectionAttribute(java.lang.String annotationClass)
boolean
isReflexive(XField f)
Deprecated.UseUnreadFieldsData.isReflexive(XField)
insteadstatic boolean
isSeleniumWebElement(java.lang.String signature)
boolean
isWrittenDuringInitialization(XField f)
Deprecated.boolean
isWrittenInConstructor(XField f)
Deprecated.UseUnreadFieldsData.isWrittenInConstructor(XField)
insteadboolean
isWrittenOutsideOfInitialization(XField f)
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
strongEvidenceForIntendedSerialization(ClassDescriptor c)
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(java.lang.String annotationClass, java.util.Map<java.lang.String,org.apache.bcel.classfile.ElementValue> map, boolean runtimeVisible)
Visit annotation on a class, field or method-
Methods 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
getAnnotationParameterAsEnum, 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 Detail
-
DEBUG
private static final boolean DEBUG
-
INITIALIZER_ANNOTATIONS
private static final java.util.List<java.lang.String> INITIALIZER_ANNOTATIONS
-
READ_BY_FRAMEWORK_ANNOTATIONS
private static final java.util.List<ClassDescriptor> 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
private final BugReporter bugReporter
-
bugAccumulator
private final BugAccumulator bugAccumulator
-
publicOrProtectedConstructor
boolean publicOrProtectedConstructor
-
anonymousClassAnnotation
private final java.util.Map<java.lang.String,java.util.List<BugAnnotation>> anonymousClassAnnotation
-
junitNestedAnnotation
private final ClassDescriptor junitNestedAnnotation
-
DO_NOT_CONSIDER
static final int DO_NOT_CONSIDER
- See Also:
- Constant Field Values
-
externalizable
final ClassDescriptor externalizable
-
serializable
final ClassDescriptor serializable
-
remote
final ClassDescriptor 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
static java.util.regex.Pattern dontComplainAbout
-
withinAnonymousClass
static java.util.regex.Pattern withinAnonymousClass
-
-
Constructor Detail
-
UnreadFields
public UnreadFields(BugReporter bugReporter)
-
-
Method Detail
-
isContainerField
@Deprecated public boolean isContainerField(XField f)
Deprecated.UseUnreadFieldsData.isContainerField(XField)
instead
-
getReadFields
@Deprecated public java.util.Set<? extends XField> getReadFields()
Deprecated.UseUnreadFieldsData.getReadFields()
instead
-
getWrittenFields
@Deprecated public java.util.Set<? extends XField> getWrittenFields()
Deprecated.UseUnreadFieldsData.getWrittenFields()
instead
-
isWrittenOutsideOfInitialization
@Deprecated public boolean isWrittenOutsideOfInitialization(XField f)
Deprecated.
-
isWrittenDuringInitialization
@Deprecated public boolean isWrittenDuringInitialization(XField f)
Deprecated.
-
isWrittenInConstructor
@Deprecated public boolean isWrittenInConstructor(XField f)
Deprecated.UseUnreadFieldsData.isWrittenInConstructor(XField)
instead
-
strongEvidenceForIntendedSerialization
@Deprecated public void strongEvidenceForIntendedSerialization(ClassDescriptor c)
Deprecated.
-
existsStrongEvidenceForIntendedSerialization
@Deprecated public boolean existsStrongEvidenceForIntendedSerialization(ClassDescriptor c)
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
public static boolean isSeleniumWebElement(java.lang.String signature)
-
visitAnnotation
public void visitAnnotation(java.lang.String annotationClass, java.util.Map<java.lang.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
public static boolean isInjectionAttribute(@DottedClassName java.lang.String annotationClass)
-
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:
OpcodeStackDetector.beforeOpcode(int)
-
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 public boolean isReflexive(XField f)
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
private BugInstance addClassFieldAndAccess(BugInstance instance, XField f)
-
containsSpecialAnnotation
public static boolean containsSpecialAnnotation(java.util.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.- Parameters:
annotationsToCheck
- Collections of annotations associated with given element.- Returns:
- If true, "URF_UNREAD_FIELD" detector should be ignored for given field.
- See Also:
- GitHub issue
-
-