Package edu.umd.cs.findbugs.detect
Class InitializationChain
- java.lang.Object
-
- All Implemented Interfaces:
Detector
,Priorities
,org.apache.bcel.classfile.Visitor
public class InitializationChain extends BytecodeScanningDetector
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static class
InitializationChain.InvocationInfo
-
Field Summary
Fields Modifier and Type Field Description private BugReporter
bugReporter
(package private) java.util.Map<java.lang.String,java.util.Set<java.lang.String>>
classRequires
private java.util.Set<XMethod>
constructorsInvokedInStaticInitializer
private static boolean
DEBUG
private java.util.Set<XField>
fieldsReadInThisConstructor
private java.util.List<InitializationChain.InvocationInfo>
invocationInfo
private InitializationChain.InvocationInfo
lastInvocation
(package private) java.util.Set<java.lang.String>
requires
private java.util.Map<XMethod,java.util.Set<XField>>
staticFieldsRead
private java.util.Set<XField>
staticFieldsReadInAnyConstructor
private java.util.Set<XField>
warningGiven
-
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 InitializationChain(BugReporter bugReporter)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
compute()
protected java.lang.Iterable<org.apache.bcel.classfile.Method>
getMethodVisitOrder(org.apache.bcel.classfile.JavaClass obj)
void
report()
This method is called after all classes to be visited.void
sawOpcode(int seen)
void
visit(org.apache.bcel.classfile.Code obj)
void
visitAfter(org.apache.bcel.classfile.JavaClass obj)
-
Methods inherited from class edu.umd.cs.findbugs.BytecodeScanningDetector
getClassContext, shouldVisitCode, visitClassContext
-
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
-
Methods inherited from class edu.umd.cs.findbugs.visitclass.AnnotationVisitor
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, 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, visitAnnotationDefault, visitAnnotationEntry, visitBootstrapMethods, visitCode, 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
-
-
-
-
Field Detail
-
requires
java.util.Set<java.lang.String> requires
-
classRequires
java.util.Map<java.lang.String,java.util.Set<java.lang.String>> classRequires
-
bugReporter
private final BugReporter bugReporter
-
staticFieldsReadInAnyConstructor
private final java.util.Set<XField> staticFieldsReadInAnyConstructor
-
fieldsReadInThisConstructor
private java.util.Set<XField> fieldsReadInThisConstructor
-
constructorsInvokedInStaticInitializer
private final java.util.Set<XMethod> constructorsInvokedInStaticInitializer
-
invocationInfo
private final java.util.List<InitializationChain.InvocationInfo> invocationInfo
-
warningGiven
private final java.util.Set<XField> warningGiven
-
lastInvocation
private InitializationChain.InvocationInfo lastInvocation
-
DEBUG
private static final boolean DEBUG
-
-
Constructor Detail
-
InitializationChain
public InitializationChain(BugReporter bugReporter)
-
-
Method Detail
-
getMethodVisitOrder
protected java.lang.Iterable<org.apache.bcel.classfile.Method> getMethodVisitOrder(org.apache.bcel.classfile.JavaClass obj)
- Overrides:
getMethodVisitOrder
in classPreorderVisitor
-
visit
public void visit(org.apache.bcel.classfile.Code obj)
- Overrides:
visit
in classDismantleBytecode
-
visitAfter
public void visitAfter(org.apache.bcel.classfile.JavaClass obj)
- Overrides:
visitAfter
in classPreorderVisitor
-
sawOpcode
public void sawOpcode(int seen)
- Overrides:
sawOpcode
in classDismantleBytecode
-
compute
public void compute()
-
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 interfaceDetector
- Overrides:
report
in classBytecodeScanningDetector
-
-