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 |
trackErrors
extInfo, 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, prepareCalleeContext
addLocations, analysisName, computeExpectedExits, createFinalVarContext, createInitContext, emptyFinalVarContext, getAnalysisForMissingReceiver, getLocationAbsVal, getSignatureForMissingCode, handleRecursiveCall, preCallNonVirtual, recordRead, recordReads, recordWrite, recordWrites, signatureAnalysisNames
abstractLocations, 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, workQueue
public 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
AnalysisUtil
analyze
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
AnalysisUtilVarContextDataFlow
analyzeInitializersForDataFlow
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
AnalysisUtilVarContextDataFlow
getAnalysisResultsFromWorkQueue
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)
AnalysisUtilVarContext
guessAnalysisForMissingCode
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)
AnalysisUtilVarContext
guessAnalysisForMissingReceiver
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