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 Classes
    Modifier and Type
    Class
    Description
    private static enum 
     
    private static enum 
     
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private static final String
     
    private edu.umd.cs.findbugs.BugReporter
     
    private boolean
     
    private String
     
    private Set<edu.umd.cs.findbugs.classfile.FieldDescriptor>
     
     
    private boolean
     
    private static final Set<String>
     
    private boolean
     
    private boolean
     
    private static final String
     
    private static final String
     
    private static final String
     
    private static final String
     
    private static final String
     
    private static final String
     
    private static final String
     
    private static final String
     
    private static final String
     
    private boolean
     
    private edu.umd.cs.findbugs.OpcodeStack
     
     
    private static final String
     
    private static final String
     
    private org.apache.bcel.classfile.JavaClass
     
    private static final String
     
    private org.apache.bcel.classfile.JavaClass
     
    private static final String
     
    private static final String
     
    private static final String
     
    private org.apache.bcel.classfile.JavaClass
     

    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
    UnitTestAssertionOddities(edu.umd.cs.findbugs.BugReporter bugReporter)
    constructs a JOA detector given the reporter to report bugs on
  • Method Summary

    Modifier and Type
    Method
    Description
    private void
    Attempt to identify whether we are dealing with JUnit or TestNG.
    private boolean
     
    private boolean
    hasFieldInjectorAnnotation(edu.umd.cs.findbugs.OpcodeStack.Item item)
     
    private boolean
     
    private boolean
     
    private boolean
     
    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)
     

    Methods inherited from class edu.umd.cs.findbugs.BytecodeScanningDetector

    getClassContext, report, shouldVisitCode

    Methods 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, visit

    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, 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 Details

  • 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:
      visitClassContext in interface edu.umd.cs.findbugs.Detector
      Overrides:
      visitClassContext in class edu.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:
      visitCode in interface org.apache.bcel.classfile.Visitor
      Overrides:
      visitCode in class edu.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:
      visitField in interface org.apache.bcel.classfile.Visitor
      Overrides:
      visitField in class edu.umd.cs.findbugs.visitclass.BetterVisitor
    • sawOpcode

      public void sawOpcode(int seen)
      Overrides:
      sawOpcode in class edu.umd.cs.findbugs.visitclass.DismantleBytecode
    • processAssert

      private boolean processAssert(UnitTestAssertionOddities.TestFrameworkType frameworkType)
    • ngProcessAssertEquals

      private boolean ngProcessAssertEquals()
    • isFloatingPtPrimitive

      private boolean isFloatingPtPrimitive(String signature)
    • hasExpects

      private boolean hasExpects()
    • hasFieldInjectorAnnotation

      private boolean hasFieldInjectorAnnotation(edu.umd.cs.findbugs.OpcodeStack.Item item)