Package edu.umd.cs.findbugs.detect
Class DroppedException
- java.lang.Object
-
- edu.umd.cs.findbugs.visitclass.BetterVisitor
-
- edu.umd.cs.findbugs.visitclass.PreorderVisitor
-
- edu.umd.cs.findbugs.detect.DroppedException
-
- All Implemented Interfaces:
Detector
,Priorities
,org.apache.bcel.classfile.Visitor
public class DroppedException extends PreorderVisitor implements Detector
-
-
Field Summary
Fields Modifier and Type Field Description private BugAccumulator
bugAccumulator
private BugReporter
bugReporter
private static int
CATCH
(package private) java.util.Set<java.lang.String>
causes
(package private) java.util.Set<java.lang.String>
checkedCauses
private ClassContext
classContext
private static int
CLOSE_PAREN
private static boolean
DEBUG
private static boolean
LOOK_IN_SOURCE_TO_FIND_COMMENTED_CATCH_BLOCKS
private static int
MAX_LINES
The number of lines that we'll scan to look at the source for a catch block.private static int
NUM_CONTEXT_LINES
Maximum number of lines we look backwards to find the "catch" keyword.private static int
OPEN_BRACE
private static int
OPEN_PAREN
private static int
START
-
Fields inherited from interface edu.umd.cs.findbugs.Priorities
EXP_PRIORITY, HIGH_PRIORITY, IGNORE_PRIORITY, LOW_PRIORITY, NORMAL_PRIORITY
-
-
Constructor Summary
Constructors Constructor Description DroppedException(BugReporter bugReporter)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private boolean
catchBlockHasComment(SourceLineAnnotation srcLine)
Analyze a class's source code to see if there is a comment (or other text) in a catch block we have marked as dropping an exception.private int
getNextExecutableLineNumber(org.apache.bcel.classfile.LineNumberTable linenumbers, int PC)
private int
getUnsignedShort(byte[] a, int i)
(package private) boolean
isChecked(java.lang.String c)
void
report()
This method is called after all classes to be visited.void
visit(org.apache.bcel.classfile.Code obj)
void
visitClassContext(ClassContext classContext)
Visit the ClassContext for a class which should be analyzed for instances of bug patterns.-
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, visitAnnotation, visitAnnotationDefault, visitAnnotationEntry, visitBootstrapMethods, visitCode, visitConstantInvokeDynamic, visitConstantMethodHandle, visitConstantMethodType, visitConstantModule, visitConstantPackage, visitConstantPool, visitEnclosingMethod, visitingField, visitingMethod, visitInnerClasses, visitJavaClass, visitLineNumberTable, visitLocalVariableTable, visitMethodParameters, visitParameterAnnotation, 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
-
-
-
-
Field Detail
-
DEBUG
private static final boolean DEBUG
-
LOOK_IN_SOURCE_TO_FIND_COMMENTED_CATCH_BLOCKS
private static final boolean LOOK_IN_SOURCE_TO_FIND_COMMENTED_CATCH_BLOCKS
-
causes
java.util.Set<java.lang.String> causes
-
checkedCauses
java.util.Set<java.lang.String> checkedCauses
-
bugReporter
private final BugReporter bugReporter
-
bugAccumulator
private final BugAccumulator bugAccumulator
-
classContext
private ClassContext classContext
-
START
private static final int START
- See Also:
- Constant Field Values
-
CATCH
private static final int CATCH
- See Also:
- Constant Field Values
-
OPEN_PAREN
private static final int OPEN_PAREN
- See Also:
- Constant Field Values
-
CLOSE_PAREN
private static final int CLOSE_PAREN
- See Also:
- Constant Field Values
-
OPEN_BRACE
private static final int OPEN_BRACE
- See Also:
- Constant Field Values
-
NUM_CONTEXT_LINES
private static final int NUM_CONTEXT_LINES
Maximum number of lines we look backwards to find the "catch" keyword. Looking backwards is necessary when the indentation style puts the open brace on a different line from the catch clause.- See Also:
- Constant Field Values
-
MAX_LINES
private static final int MAX_LINES
The number of lines that we'll scan to look at the source for a catch block.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
DroppedException
public DroppedException(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 interfaceDetector
- Parameters:
classContext
- the ClassContext
-
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.
-
isChecked
boolean isChecked(java.lang.String c)
-
getUnsignedShort
private int getUnsignedShort(byte[] a, int i)
-
visit
public void visit(org.apache.bcel.classfile.Code obj)
- Overrides:
visit
in classBetterVisitor
-
getNextExecutableLineNumber
private int getNextExecutableLineNumber(org.apache.bcel.classfile.LineNumberTable linenumbers, int PC)
-
catchBlockHasComment
private boolean catchBlockHasComment(SourceLineAnnotation srcLine)
Analyze a class's source code to see if there is a comment (or other text) in a catch block we have marked as dropping an exception.- Returns:
- true if there is a comment in the catch block, false if not (or if we can't tell)
-
-