Class CollectStatistics

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.collect.CollectStatistics
All Implemented Interfaces:
edu.umd.cs.findbugs.Detector, edu.umd.cs.findbugs.FirstPassDetector, edu.umd.cs.findbugs.NonReportingDetector, edu.umd.cs.findbugs.Priorities, org.apache.bcel.classfile.Visitor

public class CollectStatistics extends edu.umd.cs.findbugs.BytecodeScanningDetector implements edu.umd.cs.findbugs.NonReportingDetector
a first pass detector to collect various statistics used in second pass detectors.
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    (package private) static class 
    represents a method that is called, and whether it is in the super class
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private static final Set<String>
     
    private edu.umd.cs.findbugs.BugReporter
     
    private boolean
     
    private static final Set<String>
     
    private Set<QMethod>
     
    private QMethod
     
    private boolean
     
    private int
     
     
    private edu.umd.cs.findbugs.OpcodeStack
     

    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
    CollectStatistics(edu.umd.cs.findbugs.BugReporter bugReporter)
    constructs a CollectStatistics detector which clears the singleton that holds the statistics for all classes parsed in the first pass.
  • Method Summary

    Modifier and Type
    Method
    Description
    private Set<QMethod>
    buildConstrainingMethods(org.apache.bcel.classfile.JavaClass cls, Set<String> visitedClasses)
     
    private boolean
    isAssociationedWithAnnotations(org.apache.bcel.classfile.Method m)
     
    private boolean
     
    private void
    performModifyStateClosure(org.apache.bcel.classfile.JavaClass cls)
     
    void
    sawOpcode(int seen)
     
    void
    visitAnnotation(org.apache.bcel.classfile.Annotations annotations)
     
    void
    visitClassContext(edu.umd.cs.findbugs.ba.ClassContext classContext)
    implements the visitor to collect statistics on this class
    void
    visitCode(org.apache.bcel.classfile.Code 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, 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 Details

    • COMMON_METHOD_SIG_PREFIXES

      private static final Set<String> COMMON_METHOD_SIG_PREFIXES
    • BEAN_ANNOTATIONS

      private static final Set<String> BEAN_ANNOTATIONS
    • bugReporter

      private edu.umd.cs.findbugs.BugReporter bugReporter
    • numMethodCalls

      private int numMethodCalls
    • modifiesState

      private boolean modifiesState
    • classHasAnnotation

      private boolean classHasAnnotation
    • stack

      private edu.umd.cs.findbugs.OpcodeStack stack
    • selfCallTree

    • constrainingMethods

      private Set<QMethod> constrainingMethods
    • curMethod

      private QMethod curMethod
  • Constructor Details

    • CollectStatistics

      public CollectStatistics(edu.umd.cs.findbugs.BugReporter bugReporter)
      constructs a CollectStatistics detector which clears the singleton that holds the statistics for all classes parsed in the first pass.
      Parameters:
      bugReporter - unused, but required by reflection contract
  • Method Details

    • visitClassContext

      public void visitClassContext(edu.umd.cs.findbugs.ba.ClassContext classContext)
      implements the visitor to collect statistics on this class
      Specified by:
      visitClassContext in interface edu.umd.cs.findbugs.Detector
      Overrides:
      visitClassContext in class edu.umd.cs.findbugs.BytecodeScanningDetector
      Parameters:
      classContext - the currently class
    • visitAnnotation

      public void visitAnnotation(org.apache.bcel.classfile.Annotations annotations)
      Specified by:
      visitAnnotation in interface org.apache.bcel.classfile.Visitor
      Overrides:
      visitAnnotation in class edu.umd.cs.findbugs.visitclass.AnnotationVisitor
    • 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
    • sawOpcode

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

      private void performModifyStateClosure(org.apache.bcel.classfile.JavaClass cls)
    • isAssociationedWithAnnotations

      private boolean isAssociationedWithAnnotations(org.apache.bcel.classfile.Method m)
    • buildConstrainingMethods

      private Set<QMethod> buildConstrainingMethods(org.apache.bcel.classfile.JavaClass cls, Set<String> visitedClasses)
    • isConstrained

      private boolean isConstrained(QMethod m)