public class NotNullAnalysisUtil extends AnalysisUtilVarContextDataFlow<VarContext<NotNullAbsVal>,NotNullAbsVal>
| Modifier and Type | Field and Description |
|---|---|
static LibrarySignature<VarContext<NotNullAbsVal>,NotNullAbsVal> |
NOOP_MAYBENULL_RESULT_SIG |
static LibrarySignature<VarContext<NotNullAbsVal>,NotNullAbsVal> |
NOOP_NONNULL_RESULT_SIG |
static LibrarySignature<VarContext<NotNullAbsVal>,NotNullAbsVal> |
NOOP_SIG |
trackErrorsextInfo, instanceInitializersChecked, workQueue| Constructor and Description |
|---|
NotNullAnalysisUtil(WorkQueue<VarContext<NotNullAbsVal>> workQueue,
AnalysisUnit currentProcCall,
AccrueExtensionInfo extInfo) |
| Modifier and Type | Method and Description |
|---|---|
FinalVarContext<NotNullAbsVal> |
analyze(polyglot.ast.CodeNode n,
VarContext<NotNullAbsVal> before)
Analyze the given code with the given current analysis results
|
FinalVarContext<NotNullAbsVal> |
analyzeInitializersForDataFlow(VarContext<NotNullAbsVal> before)
Analyze the initializers for the current analysis unit given the current
analysis results
|
NotNullAbsVal |
bottomAbstractValue() |
protected FinalVarContext<NotNullAbsVal> |
getAnalysisResultsFromWorkQueue(AnalysisUnit callee,
VarContext<NotNullAbsVal> beforeCall,
DataFlowNodeIdentifier callSite)
Get the analysis results for the given callee and variable context.
|
protected FinalVarContext<NotNullAbsVal> |
guessAnalysisForMissingCode(polyglot.types.ProcedureInstance pi,
AnalysisContext calleeContext,
HContext receiver,
VarContext<NotNullAbsVal> input,
NotNullAbsVal receiverAbsVal,
java.util.List<NotNullAbsVal> argAbsVals,
java.util.Set<ExitMap.Key> expectedExits,
polyglot.ast.Node node)
Subclasses can override as a stop gap measure before they have signature.
|
protected FinalVarContext<NotNullAbsVal> |
guessAnalysisForMissingReceiver(polyglot.types.ProcedureInstance pi,
VarContext<NotNullAbsVal> input,
NotNullAbsVal receiverAbsVal,
java.util.List<NotNullAbsVal> argAbsVals,
java.util.Set<ExitMap.Key> expectedExits,
DataFlowNodeIdentifier callSiteNode)
Subclasses should override as a stop gap measure if the receiver is missing,
i.e., if the points to set of the receiver expression is empty.
|
call, call, call, callFromNew, callNonVirtual, constructorCall, constructorCallFromConstructor, getAnalysisResultsFromWorkQueue, guessAnalysisForMissingCode, makeFinalVarContext, mergeCallResults, prepareCalleeContextaddLocations, analysisName, computeExpectedExits, createFinalVarContext, createInitContext, emptyFinalVarContext, getAnalysisForMissingReceiver, getLocationAbsVal, getSignatureForMissingCode, handleRecursiveCall, preCallNonVirtual, recordRead, recordReads, recordWrite, recordWrites, signatureAnalysisNamesabstractLocations, abstractLocations, abstractLocations, abstractLocations, abstractLocations, abstractLocations, abstractLocations, abstractLocations, abstractLocations, abstractLocationsForArray, abstractLocationsForArray, abstractLocationsForArray, abstractLocationsImplicitTarget, analyzeInitializers, analyzeStaticInitializers, createExitMap, currentAnalysisUnit, currentClass, currentContext, extensionInfo, instanceInitializers, leq, maybeRecursiveCall, pointsTo, pointsTo, pointsTo, pointsTo, pointsTo, pointsTo, pointsTo, pointsTo, pointsTo, pointsToGraph, pointsToThis, process, recordMissingCode, typeSystem, upperBound, workQueuepublic static final LibrarySignature<VarContext<NotNullAbsVal>,NotNullAbsVal> NOOP_SIG
public static final LibrarySignature<VarContext<NotNullAbsVal>,NotNullAbsVal> NOOP_NONNULL_RESULT_SIG
public static final LibrarySignature<VarContext<NotNullAbsVal>,NotNullAbsVal> NOOP_MAYBENULL_RESULT_SIG
public NotNullAnalysisUtil(WorkQueue<VarContext<NotNullAbsVal>> workQueue, AnalysisUnit currentProcCall, AccrueExtensionInfo extInfo)
public FinalVarContext<NotNullAbsVal> analyze(polyglot.ast.CodeNode n, VarContext<NotNullAbsVal> before) throws polyglot.types.SemanticException
AnalysisUtilanalyze in class AnalysisUtil<VarContext<NotNullAbsVal>>n - Code to analyzebefore - analysis result before analyzing the given codepolyglot.types.SemanticException - thrown if the analysis failspublic FinalVarContext<NotNullAbsVal> analyzeInitializersForDataFlow(VarContext<NotNullAbsVal> before) throws polyglot.types.SemanticException
AnalysisUtilVarContextDataFlowanalyzeInitializersForDataFlow in class AnalysisUtilVarContextDataFlow<VarContext<NotNullAbsVal>,NotNullAbsVal>polyglot.types.SemanticException - thrown if the analysis failsprotected FinalVarContext<NotNullAbsVal> getAnalysisResultsFromWorkQueue(AnalysisUnit callee, VarContext<NotNullAbsVal> beforeCall, DataFlowNodeIdentifier callSite) throws polyglot.types.SemanticException
AnalysisUtilVarContextDataFlowgetAnalysisResultsFromWorkQueue in class AnalysisUtilVarContextDataFlow<VarContext<NotNullAbsVal>,NotNullAbsVal>callee - Code for a callee that is to be analyzedbeforeCall - variable context before the call to the calleepolyglot.types.SemanticException - thrown for an analysis errorpublic NotNullAbsVal bottomAbstractValue()
bottomAbstractValue in class AnalysisUtilVarContext<VarContext<NotNullAbsVal>,NotNullAbsVal>protected FinalVarContext<NotNullAbsVal> guessAnalysisForMissingCode(polyglot.types.ProcedureInstance pi, AnalysisContext calleeContext, HContext receiver, VarContext<NotNullAbsVal> input, NotNullAbsVal receiverAbsVal, java.util.List<NotNullAbsVal> argAbsVals, java.util.Set<ExitMap.Key> expectedExits, polyglot.ast.Node node)
AnalysisUtilVarContextguessAnalysisForMissingCode in class AnalysisUtilVarContext<VarContext<NotNullAbsVal>,NotNullAbsVal>pi - missing procedurecalleeContext - procedure contextreceiver - receiver heap objectinput - variable context before analysisreceiverAbsVal - value for the receiverargAbsVals - list of values for the procedure argumentsexpectedExits - set of expected exit keysnode - calling nodeprotected FinalVarContext<NotNullAbsVal> guessAnalysisForMissingReceiver(polyglot.types.ProcedureInstance pi, VarContext<NotNullAbsVal> input, NotNullAbsVal receiverAbsVal, java.util.List<NotNullAbsVal> argAbsVals, java.util.Set<ExitMap.Key> expectedExits, DataFlowNodeIdentifier callSiteNode)
AnalysisUtilVarContextguessAnalysisForMissingReceiver in class AnalysisUtilVarContext<VarContext<NotNullAbsVal>,NotNullAbsVal>pi - missing procedureinput - variable context before analysisreceiverAbsVal - abstract value for the receiverargAbsVals - list of abstract values for the procedure argumentsexpectedExits - set of expected exit keys