Package edu.umd.cs.findbugs.detect
Class CheckTypeQualifiers
- java.lang.Object
-
- edu.umd.cs.findbugs.bcel.CFGDetector
-
- edu.umd.cs.findbugs.detect.CheckTypeQualifiers
-
- All Implemented Interfaces:
Detector2
,Priorities
public class CheckTypeQualifiers extends CFGDetector
Check JSR-305 type qualifiers.
-
-
Field Summary
Fields Modifier and Type Field Description private BugReporter
bugReporter
(package private) boolean
checked
private java.lang.String
checkLocation
private static boolean
DEBUG
private static boolean
DEBUG_DATAFLOW
private static java.lang.String
DEBUG_DATAFLOW_MODE
private static java.lang.String
METHOD
private static java.lang.String
NONNULL_ANNOTATION
(package private) boolean
shouldRunAnalysis
-
Fields inherited from class edu.umd.cs.findbugs.bcel.CFGDetector
classContext, method
-
Fields inherited from interface edu.umd.cs.findbugs.Priorities
EXP_PRIORITY, HIGH_PRIORITY, IGNORE_PRIORITY, LOW_PRIORITY, NORMAL_PRIORITY
-
-
Constructor Summary
Constructors Constructor Description CheckTypeQualifiers(BugReporter bugReporter)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
annotateWarningWithSourceSinkInfo(BugInstance warning, XMethod xMethod, ValueNumber vn, SourceSinkInfo sourceSinkInfo)
private void
annotateWarningWithTypeQualifier(BugInstance warning, TypeQualifierValue<?> typeQualifierValue)
private void
checkDataflow(XMethod xmethod, CFG cfg, TypeQualifierValue<?> typeQualifierValue, ValueNumberDataflow vnaDataflow, ForwardTypeQualifierDataflow forwardDataflow, BackwardTypeQualifierDataflow backwardDataflow)
private void
checkForConflictingValues(XMethod xMethod, CFG cfg, TypeQualifierValue<?> typeQualifierValue, TypeQualifierValueSet forwardsFact, TypeQualifierValueSet backwardsFact, Location locationToReport, Location locationWhereDoomedValueIsObserved, ValueNumberFrame vnaFrame)
private void
checkForEqualityTest(XMethod xmethod, CFG cfg, TypeQualifierValue<?> typeQualifierValue, TypeQualifierValueSet forwardsFact, Location loc, ValueNumberFrame factAtLocation)
private void
checkQualifier(XMethod xmethod, CFG cfg, TypeQualifierValue<?> typeQualifierValue, ForwardTypeQualifierDataflowFactory forwardDataflowFactory, BackwardTypeQualifierDataflowFactory backwardDataflowFactory, ValueNumberDataflow vnaDataflow)
Check a specific TypeQualifierValue on a method.private void
checkValueSources(XMethod xMethod, CFG cfg, TypeQualifierValue<?> typeQualifierValue, ValueNumberDataflow vnaDataflow, ForwardTypeQualifierDataflow forwardDataflow, BackwardTypeQualifierDataflow backwardDataflow)
private void
emitDataflowWarning(XMethod xMethod, TypeQualifierValue<?> typeQualifierValue, TypeQualifierValueSet forwardsFact, TypeQualifierValueSet backwardsFact, ValueNumber vn, FlowValue forward, FlowValue backward, Location locationToReport, Location locationWhereDoomedValueIsObserved, ValueNumberFrame vnaFrame)
private void
emitSourceWarning(java.lang.String bugType, XMethod xMethod, TypeQualifierValue<?> typeQualifierValue, FlowValue backwardsFlowValue, TypeQualifierValueSet backwardsFact, SourceSinkInfo source, ValueNumber vn, Location location)
private Location
getEdgeSourceLocation(CFG cfg, Edge edge)
private Location
getEdgeTargetLocation(CFG cfg, Edge edge)
private Location
getSinkLocation(SourceSinkInfo sourceSinkInfo)
private Location
getSinkLocation(java.lang.Iterable<? extends SourceSinkInfo> info)
void
visitClass(ClassDescriptor classDescriptor)
Visit a class.protected void
visitMethodCFG(MethodDescriptor methodDescriptor, CFG cfg)
Visit the CFG (control flow graph) of a method to be analyzed.-
Methods inherited from class edu.umd.cs.findbugs.bcel.CFGDetector
finishPass
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface edu.umd.cs.findbugs.Detector2
getDetectorClassName
-
-
-
-
Field Detail
-
DEBUG
private static final boolean DEBUG
-
DEBUG_DATAFLOW
private static final boolean DEBUG_DATAFLOW
-
DEBUG_DATAFLOW_MODE
private static final java.lang.String DEBUG_DATAFLOW_MODE
-
NONNULL_ANNOTATION
private static final java.lang.String NONNULL_ANNOTATION
-
METHOD
private static final java.lang.String METHOD
-
bugReporter
private final BugReporter bugReporter
-
checked
boolean checked
-
shouldRunAnalysis
boolean shouldRunAnalysis
-
checkLocation
private java.lang.String checkLocation
-
-
Constructor Detail
-
CheckTypeQualifiers
public CheckTypeQualifiers(BugReporter bugReporter)
-
-
Method Detail
-
visitClass
public void visitClass(ClassDescriptor classDescriptor) throws CheckedAnalysisException
Description copied from interface:Detector2
Visit a class.- Specified by:
visitClass
in interfaceDetector2
- Overrides:
visitClass
in classCFGDetector
- Parameters:
classDescriptor
- descriptor naming the class to visit- Throws:
CheckedAnalysisException
- if an exception occurs during analysis
-
visitMethodCFG
protected void visitMethodCFG(MethodDescriptor methodDescriptor, CFG cfg) throws CheckedAnalysisException
Description copied from class:CFGDetector
Visit the CFG (control flow graph) of a method to be analyzed. Should be overridden by subclasses.- Specified by:
visitMethodCFG
in classCFGDetector
- Throws:
CheckedAnalysisException
-
checkQualifier
private void checkQualifier(XMethod xmethod, CFG cfg, TypeQualifierValue<?> typeQualifierValue, ForwardTypeQualifierDataflowFactory forwardDataflowFactory, BackwardTypeQualifierDataflowFactory backwardDataflowFactory, ValueNumberDataflow vnaDataflow) throws CheckedAnalysisException
Check a specific TypeQualifierValue on a method.- Parameters:
xmethod
- MethodDescriptor of methodcfg
- CFG of methodtypeQualifierValue
- TypeQualifierValue to checkforwardDataflowFactory
- ForwardTypeQualifierDataflowFactory used to create forward dataflow analysis objectsbackwardDataflowFactory
- BackwardTypeQualifierDataflowFactory used to create backward dataflow analysis objectsvnaDataflow
- ValueNumberDataflow for the method- Throws:
CheckedAnalysisException
-
checkDataflow
private void checkDataflow(XMethod xmethod, CFG cfg, TypeQualifierValue<?> typeQualifierValue, ValueNumberDataflow vnaDataflow, ForwardTypeQualifierDataflow forwardDataflow, BackwardTypeQualifierDataflow backwardDataflow) throws CheckedAnalysisException
- Throws:
CheckedAnalysisException
-
checkForEqualityTest
private void checkForEqualityTest(XMethod xmethod, CFG cfg, TypeQualifierValue<?> typeQualifierValue, TypeQualifierValueSet forwardsFact, Location loc, ValueNumberFrame factAtLocation) throws DataflowAnalysisException
- Throws:
DataflowAnalysisException
-
checkValueSources
private void checkValueSources(XMethod xMethod, CFG cfg, TypeQualifierValue<?> typeQualifierValue, ValueNumberDataflow vnaDataflow, ForwardTypeQualifierDataflow forwardDataflow, BackwardTypeQualifierDataflow backwardDataflow) throws CheckedAnalysisException
- Throws:
CheckedAnalysisException
-
checkForConflictingValues
private void checkForConflictingValues(XMethod xMethod, CFG cfg, TypeQualifierValue<?> typeQualifierValue, TypeQualifierValueSet forwardsFact, TypeQualifierValueSet backwardsFact, Location locationToReport, Location locationWhereDoomedValueIsObserved, ValueNumberFrame vnaFrame) throws CheckedAnalysisException
- Throws:
CheckedAnalysisException
-
emitDataflowWarning
private void emitDataflowWarning(XMethod xMethod, TypeQualifierValue<?> typeQualifierValue, TypeQualifierValueSet forwardsFact, TypeQualifierValueSet backwardsFact, ValueNumber vn, FlowValue forward, FlowValue backward, Location locationToReport, @CheckForNull Location locationWhereDoomedValueIsObserved, ValueNumberFrame vnaFrame) throws CheckedAnalysisException
- Throws:
CheckedAnalysisException
-
emitSourceWarning
private void emitSourceWarning(java.lang.String bugType, XMethod xMethod, TypeQualifierValue<?> typeQualifierValue, FlowValue backwardsFlowValue, TypeQualifierValueSet backwardsFact, SourceSinkInfo source, ValueNumber vn, Location location)
-
annotateWarningWithTypeQualifier
private void annotateWarningWithTypeQualifier(BugInstance warning, TypeQualifierValue<?> typeQualifierValue)
-
annotateWarningWithSourceSinkInfo
private void annotateWarningWithSourceSinkInfo(BugInstance warning, XMethod xMethod, ValueNumber vn, SourceSinkInfo sourceSinkInfo)
-
getSinkLocation
@CheckForNull private Location getSinkLocation(SourceSinkInfo sourceSinkInfo)
-
getSinkLocation
@CheckForNull private Location getSinkLocation(java.lang.Iterable<? extends SourceSinkInfo> info)
-
-