Class FindNullDeref

    • Field Detail

      • DEBUG

        public static final boolean DEBUG
      • catchTypesForNull

        @StaticConstant
        public static final java.util.Set<java.lang.String> catchTypesForNull
    • Constructor Detail

      • FindNullDeref

        public FindNullDeref​(BugReporter bugReporter)
    • Method Detail

      • visitClassContext

        public void visitClassContext​(ClassContext classContext)
        Description copied from interface: Detector
        Visit the ClassContext for a class which should be analyzed for instances of bug patterns.
        Specified by:
        visitClassContext in interface Detector
        Parameters:
        classContext - the ClassContext
      • catchesNull

        public static boolean catchesNull​(org.apache.bcel.classfile.ConstantPool constantPool,
                                          org.apache.bcel.classfile.Code code,
                                          Location location)
      • report

        public void report()
        Description copied from interface: Detector
        This 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:
        report in interface Detector
      • skipIfInsideCatchNull

        public boolean skipIfInsideCatchNull()
      • foundNullDeref

        public void foundNullDeref​(Location location,
                                   ValueNumber valueNumber,
                                   IsNullValue refValue,
                                   ValueNumberFrame vnaFrame,
                                   boolean isConsistent)
        Description copied from interface: NullDerefAndRedundantComparisonCollector
        Subclasses should override this method to capture locations where a null pointer is dereferenced.
        Specified by:
        foundNullDeref in interface NullDerefAndRedundantComparisonCollector
        Parameters:
        location - the Location of the null dereference
        valueNumber - the ValueNumber of the possibly-null value
        refValue - the kind of possibly-null value dereferenced
        vnaFrame - The ValueNumber Frame at the point where the dereference occurred
        isConsistent - true if the refValue is identical at all clones of the same instruction
      • isThrower

        public static boolean isThrower​(BasicBlock target)
      • foundGuaranteedNullDeref

        public void foundGuaranteedNullDeref​(@Nonnull
                                             java.util.Set<Location> assignedNullLocationSet,
                                             @Nonnull
                                             java.util.Set<Location> derefLocationSet,
                                             java.util.SortedSet<Location> doomedLocations,
                                             ValueNumberDataflow vna,
                                             ValueNumber refValue,
                                             @CheckForNull
                                             BugAnnotation variableAnnotation,
                                             NullValueUnconditionalDeref deref,
                                             boolean npeIfStatementCovered)
        Description copied from interface: NullDerefAndRedundantComparisonCollector
        Subclasses should override this method to capture values assigned null (or that become null through a comparison and branch) that are guaranteed to reach a dereference (ignoring implicit exception paths).
        Specified by:
        foundGuaranteedNullDeref in interface NullDerefAndRedundantComparisonCollector
        Parameters:
        assignedNullLocationSet - set of locations where the value becomes null
        derefLocationSet - set of locations where dereferences occur
        doomedLocations - locations at which the value is doomed
        vna - ValueNumberDataflow
        refValue - the null value
        variableAnnotation - TODO
        deref - TODO
        npeIfStatementCovered - true if doom location is a statement