Package com.mebigfatguy.fbcontrib.detect
Class UnitTestAssertionOddities
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
com.mebigfatguy.fbcontrib.detect.UnitTestAssertionOddities
- All Implemented Interfaces:
edu.umd.cs.findbugs.Detector,edu.umd.cs.findbugs.Priorities,org.apache.bcel.classfile.Visitor
@CustomUserValue
public class UnitTestAssertionOddities
extends edu.umd.cs.findbugs.BytecodeScanningDetector
looks for odd uses of the Assert class of the JUnit and TestNG framework
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static enumprivate static enum -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final Stringprivate edu.umd.cs.findbugs.BugReporterprivate booleanprivate Stringprivate Set<edu.umd.cs.findbugs.classfile.FieldDescriptor> private booleanprivate booleanprivate booleanprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate booleanprivate edu.umd.cs.findbugs.OpcodeStackprivate UnitTestAssertionOddities.Stateprivate static final Stringprivate static final Stringprivate org.apache.bcel.classfile.JavaClassprivate static final Stringprivate org.apache.bcel.classfile.JavaClassprivate static final Stringprivate static final Stringprivate static final Stringprivate org.apache.bcel.classfile.JavaClassFields inherited from class edu.umd.cs.findbugs.visitclass.DismantleBytecode
codeBytes, lineNumberTable, M_BR, M_CP, M_INT, M_PAD, M_R, M_UINTFields inherited from interface edu.umd.cs.findbugs.Priorities
EXP_PRIORITY, HIGH_PRIORITY, IGNORE_PRIORITY, LOW_PRIORITY, NORMAL_PRIORITY -
Constructor Summary
ConstructorsConstructorDescriptionUnitTestAssertionOddities(edu.umd.cs.findbugs.BugReporter bugReporter) constructs a JOA detector given the reporter to report bugs on -
Method Summary
Modifier and TypeMethodDescriptionprivate voidAttempt to identify whether we are dealing with JUnit or TestNG.private booleanprivate booleanhasFieldInjectorAnnotation(edu.umd.cs.findbugs.OpcodeStack.Item item) private booleanisFloatingPtPrimitive(String signature) private booleanprivate booleanprocessAssert(UnitTestAssertionOddities.TestFrameworkType frameworkType) voidsawOpcode(int seen) voidvisitClassContext(edu.umd.cs.findbugs.ba.ClassContext classContext) override the visitor to see if this class could be a test classvoidvisitCode(org.apache.bcel.classfile.Code obj) voidvisitField(org.apache.bcel.classfile.Field obj) Methods inherited from class edu.umd.cs.findbugs.BytecodeScanningDetector
getClassContext, report, shouldVisitCodeMethods inherited from class edu.umd.cs.findbugs.visitclass.DismantleBytecode
afterOpcode, 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, visitMethods inherited from class edu.umd.cs.findbugs.visitclass.AnnotationVisitor
getAnnotationParameterAsEnum, getAnnotationParameterAsString, getAnnotationParameterAsStringArray, visitAnnotation, visitAnnotation, visitParameterAnnotation, visitParameterAnnotation, visitSyntheticParameterAnnotationMethods 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, visitStackMapEntryMethods 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, visitInnerClass, visitLineNumber, visitLocalVariable, visitLocalVariableTypeTable, visitMethod, visitSignature, visitSourceFile, visitSynthetic, visitUnknownMethods inherited from class java.lang.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
-
INJECTOR_ANNOTATIONS
-
BOOLEAN_TYPE_SIGNATURE
- See Also:
-
LJAVA_LANG_DOUBLE
- See Also:
-
TESTCASE_CLASS
- See Also:
-
TEST_CLASS
- See Also:
-
TEST_ANNOTATION_SIGNATURE
- See Also:
-
OLD_ASSERT_CLASS
- See Also:
-
NEW_ASSERT_CLASS
- See Also:
-
JUPITER_ASSERT_CLASS
- See Also:
-
TESTNG_CLASS
- See Also:
-
TESTNG_ANNOTATION_SIGNATURE
- See Also:
-
TESTJUPITER_ANNOTATION_SIGNATURE
- See Also:
-
NG_ASSERT_CLASS
- See Also:
-
NG_JUNIT_ASSERT_CLASS
- See Also:
-
MBEAN_CLASS
- See Also:
-
MBEAN_METHOD
- See Also:
-
RESULTSACTION_CLASS
- See Also:
-
bugReporter
private edu.umd.cs.findbugs.BugReporter bugReporter -
testCaseClass
private org.apache.bcel.classfile.JavaClass testCaseClass -
testAnnotationClass
private org.apache.bcel.classfile.JavaClass testAnnotationClass -
testNGAnnotationClass
private org.apache.bcel.classfile.JavaClass testNGAnnotationClass -
stack
private edu.umd.cs.findbugs.OpcodeStack stack -
isTestCaseDerived
private boolean isTestCaseDerived -
isAnnotationCapable
private boolean isAnnotationCapable -
className
-
sawAssert
private boolean sawAssert -
state
-
checkIsNegated
private boolean checkIsNegated -
frameworkType
-
hasAnnotation
private boolean hasAnnotation -
fieldsWithAnnotations
-
-
Constructor Details
-
UnitTestAssertionOddities
public UnitTestAssertionOddities(edu.umd.cs.findbugs.BugReporter bugReporter) constructs a JOA detector given the reporter to report bugs on- Parameters:
bugReporter- the sync of bug reports
-
-
Method Details
-
visitClassContext
public void visitClassContext(edu.umd.cs.findbugs.ba.ClassContext classContext) override the visitor to see if this class could be a test class- Specified by:
visitClassContextin interfaceedu.umd.cs.findbugs.Detector- Overrides:
visitClassContextin classedu.umd.cs.findbugs.BytecodeScanningDetector- Parameters:
classContext- the context object of the currently parsed class
-
visitCode
public void visitCode(org.apache.bcel.classfile.Code obj) - Specified by:
visitCodein interfaceorg.apache.bcel.classfile.Visitor- Overrides:
visitCodein classedu.umd.cs.findbugs.visitclass.PreorderVisitor
-
detectFrameworkType
private void detectFrameworkType()Attempt to identify whether we are dealing with JUnit or TestNG. -
visitField
public void visitField(org.apache.bcel.classfile.Field obj) - Specified by:
visitFieldin interfaceorg.apache.bcel.classfile.Visitor- Overrides:
visitFieldin classedu.umd.cs.findbugs.visitclass.BetterVisitor
-
sawOpcode
public void sawOpcode(int seen) - Overrides:
sawOpcodein classedu.umd.cs.findbugs.visitclass.DismantleBytecode
-
processAssert
-
ngProcessAssertEquals
private boolean ngProcessAssertEquals() -
isFloatingPtPrimitive
-
hasExpects
private boolean hasExpects() -
hasFieldInjectorAnnotation
private boolean hasFieldInjectorAnnotation(edu.umd.cs.findbugs.OpcodeStack.Item item)
-