@OpcodeStack.CustomUserValue
public class UnitTestAssertionOddities
extends edu.umd.cs.findbugs.BytecodeScanningDetector
| Modifier and Type | Class and Description |
|---|---|
private static class |
UnitTestAssertionOddities.State |
private static class |
UnitTestAssertionOddities.TestFrameworkType |
| Modifier and Type | Field and Description |
|---|---|
private static java.lang.String |
BOOLEAN_TYPE_SIGNATURE |
private edu.umd.cs.findbugs.BugReporter |
bugReporter |
private boolean |
checkIsNegated |
private java.lang.String |
clsName |
private java.util.Set<edu.umd.cs.findbugs.classfile.FieldDescriptor> |
fieldsWithAnnotations |
private UnitTestAssertionOddities.TestFrameworkType |
frameworkType |
private boolean |
hasAnnotation |
private static java.util.Set<java.lang.String> |
INJECTOR_ANNOTATIONS |
private boolean |
isAnnotationCapable |
private boolean |
isTestCaseDerived |
private static java.lang.String |
LJAVA_LANG_DOUBLE |
private static java.lang.String |
NEW_ASSERT_CLASS |
private static java.lang.String |
NG_ASSERT_CLASS |
private static java.lang.String |
NG_JUNIT_ASSERT_CLASS |
private static java.lang.String |
OLD_ASSERT_CLASS |
private boolean |
sawAssert |
private edu.umd.cs.findbugs.OpcodeStack |
stack |
private UnitTestAssertionOddities.State |
state |
private static java.lang.String |
TEST_ANNOTATION_SIGNATURE |
private static java.lang.String |
TEST_CLASS |
private org.apache.bcel.classfile.JavaClass |
testAnnotationClass |
private static java.lang.String |
TESTCASE_CLASS |
private org.apache.bcel.classfile.JavaClass |
testCaseClass |
private static java.lang.String |
TESTNG_ANNOTATION_SIGNATURE |
private static java.lang.String |
TESTNG_CLASS |
private org.apache.bcel.classfile.JavaClass |
testNGAnnotationClass |
codeBytes, lineNumberTable, M_BR, M_CP, M_INT, M_PAD, M_R, M_UINTEXP_PRIORITY, HIGH_PRIORITY, IGNORE_PRIORITY, LOW_PRIORITY, NORMAL_PRIORITYAALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_SYPER, ACC_TRANSIENT, ACC_VARARGS, ACC_VOLATILE, ACCESS_NAMES, ACONST_NULL, ALOAD, ALOAD_0, ALOAD_1, ALOAD_2, ALOAD_3, ANEWARRAY, ANEWARRAY_QUICK, APPEND_FRAME, APPEND_FRAME_MAX, ARETURN, ARRAYLENGTH, ASTORE, ASTORE_0, ASTORE_1, ASTORE_2, ASTORE_3, ATHROW, ATTR_ANNOTATION_DEFAULT, ATTR_CODE, ATTR_CONSTANT_VALUE, ATTR_DEPRECATED, ATTR_ENCLOSING_METHOD, ATTR_EXCEPTIONS, ATTR_INNER_CLASSES, ATTR_LINE_NUMBER_TABLE, ATTR_LOCAL_VARIABLE_TABLE, ATTR_LOCAL_VARIABLE_TYPE_TABLE, ATTR_PMG, ATTR_RUNTIME_VISIBLE_ANNOTATIONS, ATTR_RUNTIME_VISIBLE_PARAMETER_ANNOTATIONS, ATTR_RUNTIMEIN_VISIBLE_ANNOTATIONS, ATTR_RUNTIMEIN_VISIBLE_PARAMETER_ANNOTATIONS, ATTR_SIGNATURE, ATTR_SOURCE_FILE, ATTR_STACK_MAP, ATTR_STACK_MAP_TABLE, ATTR_SYNTHETIC, ATTR_UNKNOWN, ATTRIBUTE_NAMES, BALOAD, BASTORE, BIPUSH, BREAKPOINT, CALOAD, CASTORE, CHECKCAST, CHECKCAST_QUICK, CHOP_FRAME, CHOP_FRAME_MAX, CLASS_TYPE_NAMES, CONSTANT_Class, CONSTANT_Double, CONSTANT_Fieldref, CONSTANT_Float, CONSTANT_Integer, CONSTANT_InterfaceMethodref, CONSTANT_InvokeDynamic, CONSTANT_Long, CONSTANT_MethodHandle, CONSTANT_Methodref, CONSTANT_MethodType, CONSTANT_NameAndType, CONSTANT_NAMES, CONSTANT_String, CONSTANT_Utf8, CONSTRUCTOR_NAME, CONSUME_STACK, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DLOAD_0, DLOAD_1, DLOAD_2, DLOAD_3, DMUL, DNEG, DREM, DRETURN, DSTORE, DSTORE_0, DSTORE_1, DSTORE_2, DSTORE_3, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAD_0, FLOAD_1, FLOAD_2, FLOAD_3, FMUL, FNEG, FREM, FRETURN, FSTORE, FSTORE_0, FSTORE_1, FSTORE_2, FSTORE_3, FSUB, FULL_FRAME, GETFIELD, GETFIELD_QUICK, GETFIELD_QUICK_W, GETFIELD2_QUICK, GETSTATIC, GETSTATIC_QUICK, GETSTATIC2_QUICK, GOTO, GOTO_W, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILLEGAL_OPCODE, ILLEGAL_TYPE, ILOAD, ILOAD_0, ILOAD_1, ILOAD_2, ILOAD_3, IMPDEP1, IMPDEP2, IMUL, INEG, INSTANCEOF, INSTANCEOF_QUICK, INT2BYTE, INT2CHAR, INT2SHORT, INTERFACES_IMPLEMENTED_BY_ARRAYS, INVOKEDYNAMIC, INVOKEINTERFACE, INVOKEINTERFACE_QUICK, INVOKENONVIRTUAL, INVOKENONVIRTUAL_QUICK, INVOKESPECIAL, INVOKESTATIC, INVOKESTATIC_QUICK, INVOKESUPER_QUICK, INVOKEVIRTUAL, INVOKEVIRTUAL_QUICK, INVOKEVIRTUAL_QUICK_W, INVOKEVIRTUALOBJECT_QUICK, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISTORE_0, ISTORE_1, ISTORE_2, ISTORE_3, ISUB, ITEM_Bogus, ITEM_Double, ITEM_Float, ITEM_InitObject, ITEM_Integer, ITEM_Long, ITEM_NAMES, ITEM_NewObject, ITEM_Null, ITEM_Object, IUSHR, IXOR, JSR, JSR_W, KNOWN_ATTRIBUTES, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDC_QUICK, LDC_W, LDC_W_QUICK, LDC2_W, LDC2_W_QUICK, LDIV, LLOAD, LLOAD_0, LLOAD_1, LLOAD_2, LLOAD_3, LMUL, LNEG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSTORE_0, LSTORE_1, LSTORE_2, LSTORE_3, LSUB, LUSHR, LXOR, MAJOR, MAJOR_1_1, MAJOR_1_2, MAJOR_1_3, MAJOR_1_4, MAJOR_1_5, MAJOR_1_6, MAJOR_1_7, MAJOR_1_8, MAX_ACC_FLAG, MAX_BYTE, MAX_CODE_SIZE, MAX_CP_ENTRIES, MAX_SHORT, MINOR, MINOR_1_1, MINOR_1_2, MINOR_1_3, MINOR_1_4, MINOR_1_5, MINOR_1_6, MINOR_1_7, MINOR_1_8, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, MULTIANEWARRAY_QUICK, NEW, NEW_QUICK, NEWARRAY, NO_OF_OPERANDS, NOP, OPCODE_NAMES, POP, POP2, PRODUCE_STACK, PUSH, PUTFIELD, PUTFIELD_QUICK, PUTFIELD_QUICK_W, PUTFIELD2_QUICK, PUTSTATIC, PUTSTATIC_QUICK, PUTSTATIC2_QUICK, RESERVED, RET, RETURN, SALOAD, SAME_FRAME, SAME_FRAME_EXTENDED, SAME_FRAME_MAX, SAME_LOCALS_1_STACK_ITEM_FRAME, SAME_LOCALS_1_STACK_ITEM_FRAME_EXTENDED, SAME_LOCALS_1_STACK_ITEM_FRAME_MAX, SASTORE, SHORT_TYPE_NAMES, SIPUSH, STATIC_INITIALIZER_NAME, SWAP, SWITCH, T_ADDRESS, T_ARRAY, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_OBJECT, T_REFERENCE, T_SHORT, T_UNKNOWN, T_VOID, TABLESWITCH, TYPE_NAMES, TYPE_OF_OPERANDS, UNDEFINED, UNPREDICTABLE, WIDE| Constructor and Description |
|---|
UnitTestAssertionOddities(edu.umd.cs.findbugs.BugReporter bugReporter)
constructs a JOA detector given the reporter to report bugs on
|
| Modifier and Type | Method and Description |
|---|---|
private void |
detectFrameworkType()
Attempt to identify whether we are dealing with JUnit or TestNG.
|
private boolean |
hasExpects() |
private boolean |
hasFieldInjectorAnnotation(edu.umd.cs.findbugs.OpcodeStack.Item item) |
private boolean |
isFloatingPtPrimitive(java.lang.String signature) |
private boolean |
ngProcessAssertEquals() |
private boolean |
processAssert() |
void |
sawOpcode(int seen) |
void |
visitClassContext(edu.umd.cs.findbugs.ba.ClassContext classContext)
override the visitor to see if this class could be a test class
|
void |
visitCode(org.apache.bcel.classfile.Code obj) |
void |
visitField(org.apache.bcel.classfile.Field obj) |
getClassContext, report, shouldVisitCodeafterOpcode, areOppositeBranches, atCatchBlock, beforeOpcode, 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, visitgetAnnotationParameterAsString, getAnnotationParameterAsStringArray, visitAnnotation, visitAnnotation, visitParameterAnnotation, visitParameterAnnotation, visitSyntheticParameterAnnotationamVisitingMainMethod, 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, getSurroundingTryBlock, getSurroundingTryBlock, getThisClass, getXClass, getXField, getXMethod, hasInterestingClass, hasInterestingMethod, isVisitMethodsInCallOrder, setupVisitorForClass, setVisitMethodsInCallOrder, shouldVisit, toString, visitAfter, visitAfter, visitAnnotationDefault, visitAnnotationEntry, visitConstantPool, visitEnclosingMethod, visitingField, visitingMethod, visitInnerClasses, visitJavaClass, visitLineNumberTable, visitLocalVariableTable, visitStackMapTable, visitStackMapTableEntryclone, 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, visitInnerClass, visitLineNumber, visitLocalVariable, visitLocalVariableTypeTable, visitMethod, visitSignature, visitSourceFile, visitStackMap, visitStackMapEntry, visitSynthetic, visitUnknownprivate static final java.util.Set<java.lang.String> INJECTOR_ANNOTATIONS
private static final java.lang.String BOOLEAN_TYPE_SIGNATURE
private static final java.lang.String LJAVA_LANG_DOUBLE
private static final java.lang.String TESTCASE_CLASS
private static final java.lang.String TEST_CLASS
private static final java.lang.String TEST_ANNOTATION_SIGNATURE
private static final java.lang.String OLD_ASSERT_CLASS
private static final java.lang.String NEW_ASSERT_CLASS
private static final java.lang.String TESTNG_CLASS
private static final java.lang.String TESTNG_ANNOTATION_SIGNATURE
private static final java.lang.String NG_ASSERT_CLASS
private static final java.lang.String NG_JUNIT_ASSERT_CLASS
private edu.umd.cs.findbugs.BugReporter bugReporter
private org.apache.bcel.classfile.JavaClass testCaseClass
private org.apache.bcel.classfile.JavaClass testAnnotationClass
private org.apache.bcel.classfile.JavaClass testNGAnnotationClass
private edu.umd.cs.findbugs.OpcodeStack stack
private boolean isTestCaseDerived
private boolean isAnnotationCapable
private java.lang.String clsName
private boolean sawAssert
private UnitTestAssertionOddities.State state
private boolean checkIsNegated
private UnitTestAssertionOddities.TestFrameworkType frameworkType
private boolean hasAnnotation
private java.util.Set<edu.umd.cs.findbugs.classfile.FieldDescriptor> fieldsWithAnnotations
public UnitTestAssertionOddities(edu.umd.cs.findbugs.BugReporter bugReporter)
bugReporter - the sync of bug reportspublic void visitClassContext(edu.umd.cs.findbugs.ba.ClassContext classContext)
visitClassContext in interface edu.umd.cs.findbugs.DetectorvisitClassContext in class edu.umd.cs.findbugs.BytecodeScanningDetectorclassContext - the context object of the currently parsed classpublic void visitCode(org.apache.bcel.classfile.Code obj)
visitCode in interface org.apache.bcel.classfile.VisitorvisitCode in class edu.umd.cs.findbugs.visitclass.PreorderVisitorprivate void detectFrameworkType()
public void visitField(org.apache.bcel.classfile.Field obj)
visitField in interface org.apache.bcel.classfile.VisitorvisitField in class edu.umd.cs.findbugs.visitclass.BetterVisitorpublic void sawOpcode(int seen)
sawOpcode in class edu.umd.cs.findbugs.visitclass.DismantleBytecodeprivate boolean processAssert()
private boolean ngProcessAssertEquals()
private boolean isFloatingPtPrimitive(java.lang.String signature)
private boolean hasExpects()
private boolean hasFieldInjectorAnnotation(edu.umd.cs.findbugs.OpcodeStack.Item item)
Copyright © 2005-2017 MeBigFatGuy.com. All Rights Reserved.