Package edu.umd.cs.findbugs.detect
Class OverridingEqualsNotSymmetrical
- java.lang.Object
-
- edu.umd.cs.findbugs.visitclass.BetterVisitor
-
- edu.umd.cs.findbugs.visitclass.PreorderVisitor
-
- edu.umd.cs.findbugs.visitclass.AnnotationVisitor
-
- edu.umd.cs.findbugs.visitclass.DismantleBytecode
-
- edu.umd.cs.findbugs.BytecodeScanningDetector
-
- edu.umd.cs.findbugs.bcel.OpcodeStackDetector
-
- edu.umd.cs.findbugs.detect.OverridingEqualsNotSymmetrical
-
- All Implemented Interfaces:
Detector,FirstPassDetector,Priorities,org.apache.bcel.classfile.Visitor
public class OverridingEqualsNotSymmetrical extends OpcodeStackDetector implements FirstPassDetector
-
-
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 booleanalwaysFalseprivate booleanalwaysTrue(package private) BugAccumulatorbugAccumulator(package private) BugReporterbugReporter(package private) java.util.Map<ClassDescriptor,java.util.Set<ClassDescriptor>>classesWithGetClassBasedEquals(package private) java.util.Map<ClassDescriptor,java.util.Set<ClassDescriptor>>classesWithInstanceOfBasedEqualsprivate booleandangerDangerprivate static java.lang.StringEQUALS_NAMEprivate static java.lang.StringEQUALS_SIGNATUREprivate intequalsCalls(package private) EqualsKindSummaryequalsKindSummary(package private) java.util.Map<ClassAnnotation,MethodDescriptor>equalsMethodprivate booleanisRecord(package private) java.util.Map<ClassAnnotation,ClassAnnotation>parentMapprivate booleanprevWasSuperEqualsprivate booleansawBadEqualsClassprivate booleansawBranchprivate booleansawCheckedCastprivate booleansawCompareprivate booleansawEqualsBuilderprivate booleansawGetClassprivate booleansawGoodEqualsClassprivate booleansawInitialIdentityCheckprivate booleansawInstanceOfprivate booleansawInstanceOfSupertypeprivate booleansawReturnNonSuperprivate booleansawReturnSuperprivate booleansawStaticDelegateprivate booleansawSuperEquals-
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 OverridingEqualsNotSymmetrical(BugReporter bugReporter)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private booleancallToInvoke(int seen)private voidcheckForComparingClasses()booleaninvokesMethodWithEqualLikeName()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.voidvisit(org.apache.bcel.classfile.Code obj)-
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, 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, 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, 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
-
EQUALS_NAME
private static final java.lang.String EQUALS_NAME
- See Also:
- Constant Field Values
-
EQUALS_SIGNATURE
private static final java.lang.String EQUALS_SIGNATURE
- See Also:
- Constant Field Values
-
classesWithGetClassBasedEquals
java.util.Map<ClassDescriptor,java.util.Set<ClassDescriptor>> classesWithGetClassBasedEquals
-
classesWithInstanceOfBasedEquals
java.util.Map<ClassDescriptor,java.util.Set<ClassDescriptor>> classesWithInstanceOfBasedEquals
-
parentMap
java.util.Map<ClassAnnotation,ClassAnnotation> parentMap
-
equalsMethod
java.util.Map<ClassAnnotation,MethodDescriptor> equalsMethod
-
bugReporter
final BugReporter bugReporter
-
bugAccumulator
final BugAccumulator bugAccumulator
-
equalsKindSummary
final EqualsKindSummary equalsKindSummary
-
sawInstanceOf
private boolean sawInstanceOf
-
sawInstanceOfSupertype
private boolean sawInstanceOfSupertype
-
sawCheckedCast
private boolean sawCheckedCast
-
sawGetClass
private boolean sawGetClass
-
sawReturnSuper
private boolean sawReturnSuper
-
sawSuperEquals
private boolean sawSuperEquals
-
sawReturnNonSuper
private boolean sawReturnNonSuper
-
prevWasSuperEquals
private boolean prevWasSuperEquals
-
sawInitialIdentityCheck
private boolean sawInitialIdentityCheck
-
alwaysTrue
private boolean alwaysTrue
-
alwaysFalse
private boolean alwaysFalse
-
equalsCalls
private int equalsCalls
-
sawGoodEqualsClass
private boolean sawGoodEqualsClass
-
sawBadEqualsClass
private boolean sawBadEqualsClass
-
sawCompare
private boolean sawCompare
-
dangerDanger
private boolean dangerDanger
-
sawStaticDelegate
private boolean sawStaticDelegate
-
sawEqualsBuilder
private boolean sawEqualsBuilder
-
isRecord
private boolean isRecord
-
sawBranch
private boolean sawBranch
-
-
Constructor Detail
-
OverridingEqualsNotSymmetrical
public OverridingEqualsNotSymmetrical(BugReporter bugReporter)
-
-
Method Detail
-
visit
public void visit(org.apache.bcel.classfile.Code obj)
- Overrides:
visitin classDismantleBytecode
-
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:
OpcodeStackDetector.beforeOpcode(int)
-
callToInvoke
private boolean callToInvoke(int seen)
-
invokesMethodWithEqualLikeName
public boolean invokesMethodWithEqualLikeName()
-
checkForComparingClasses
private void checkForComparingClasses()
-
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
-
-