Interface CFGVisualizer<V extends AbstractValue<V>,S extends Store<S>,T extends TransferFunction<V,S>>
- Type Parameters:
V- the abstract value type to be tracked by the analysisS- the store type used in the analysisT- the transfer function type that is used to approximate runtime behavior
- All Known Implementing Classes:
AbstractCFGVisualizer,DOTCFGVisualizer,StringCFGVisualizer
public interface CFGVisualizer<V extends AbstractValue<V>,S extends Store<S>,T extends TransferFunction<V,S>>
Perform some visualization on a control flow graph. The particular operations depend on the
implementation.
-
Method Summary
Modifier and TypeMethodDescriptionReturns the separator for lines within a node's representation.voidInitialization method guaranteed to be called once before the first invocation ofvisualize(org.checkerframework.dataflow.cfg.ControlFlowGraph, org.checkerframework.dataflow.cfg.block.Block, org.checkerframework.dataflow.analysis.Analysis<V, S, T>).voidshutdown()Shutdown method called once from the shutdown hook of theBaseTypeChecker.Output a visualization representing the control flow graph starting atentry.Visualize a block based on the analysis.Visualize a Node based on the analysis.Visualize the transferInput after a Block based on the analysis.Visualize the transferInput before a Block based on the analysis.Visualize a ConditionalBlock.Visualize a SpecialBlock.visualizeStore(S store) Delegate the visualization responsibility to the passedStoreinstance, which will call back to this visualizer instance for sub-components.visualizeStoreArrayVal(ArrayAccess arrayValue, V value) Called byCFAbstractStore#internalVisualize()to visualize the value of one array collected by this Store.visualizeStoreClassVals(ClassName className, V value) Called byCFAbstractStore#internalVisualize()to visualize the value of class names collected by this Store.visualizeStoreFieldVal(FieldAccess fieldAccess, V value) Called byCFAbstractStore#internalVisualize()to visualize the value of one field collected by this Store.visualizeStoreKeyVal(String keyName, Object value) Called byCFAbstractStore#internalVisualize()to visualize the specific information collected according to the specific kind of Store.visualizeStoreLocalVar(LocalVariable localVar, V value) Called byCFAbstractStore#internalVisualize()to visualize a local variable.visualizeStoreMethodVals(MethodCall methodCall, V value) Called byCFAbstractStore#internalVisualize()to visualize the value of pure method calls collected by this Store.visualizeStoreThisVal(V value) Called byCFAbstractStore#internalVisualize()to visualize the value of the current objectthisin this Store.
-
Method Details
-
init
Initialization method guaranteed to be called once before the first invocation ofvisualize(org.checkerframework.dataflow.cfg.ControlFlowGraph, org.checkerframework.dataflow.cfg.block.Block, org.checkerframework.dataflow.analysis.Analysis<V, S, T>).- Parameters:
args- implementation-dependent options
-
getSeparator
String getSeparator()Returns the separator for lines within a node's representation.- Returns:
- the separator for lines within a node's representation
-
visualize
@Nullable Map<String,Object> visualize(ControlFlowGraph cfg, Block entry, @Nullable Analysis<V, S, T> analysis) Output a visualization representing the control flow graph starting atentry. The concrete actions are implementation dependent.An invocation
visualize(cfg, entry, null);does not output stores at the beginning of basic blocks.- Parameters:
cfg- the CFG to visualizeentry- the entry node of the control flow graph to be representedanalysis- an analysis containing information about the program represented by the CFG. The information includesStores that are valid at the beginning of basic blocks reachable fromentryand per-node information for value producingNodes. Can also benullto indicate that this information should not be output.- Returns:
- visualization results, e.g. generated file names (
DOTCFGVisualizer) or a String representation of the CFG (StringCFGVisualizer)
-
visualizeStore
Delegate the visualization responsibility to the passedStoreinstance, which will call back to this visualizer instance for sub-components.- Parameters:
store- the store to visualize- Returns:
- the String representation of the given store
-
visualizeStoreLocalVar
Called byCFAbstractStore#internalVisualize()to visualize a local variable.- Parameters:
localVar- the local variablevalue- the value of the local variable- Returns:
- the String representation of the local variable
-
visualizeStoreThisVal
Called byCFAbstractStore#internalVisualize()to visualize the value of the current objectthisin this Store.- Parameters:
value- the value of the current objectthis- Returns:
- the String representation of
this
-
visualizeStoreFieldVal
Called byCFAbstractStore#internalVisualize()to visualize the value of one field collected by this Store.- Parameters:
fieldAccess- the fieldvalue- the value of the field- Returns:
- the String representation of the field
-
visualizeStoreArrayVal
Called byCFAbstractStore#internalVisualize()to visualize the value of one array collected by this Store.- Parameters:
arrayValue- the arrayvalue- the value of the array- Returns:
- the String representation of the array
-
visualizeStoreMethodVals
Called byCFAbstractStore#internalVisualize()to visualize the value of pure method calls collected by this Store.- Parameters:
methodCall- the pure method callvalue- the value of the pure method call- Returns:
- the String representation of the pure method call
-
visualizeStoreClassVals
Called byCFAbstractStore#internalVisualize()to visualize the value of class names collected by this Store.- Parameters:
className- the class namevalue- the value of the class name- Returns:
- the String representation of the class name
-
visualizeStoreKeyVal
Called byCFAbstractStore#internalVisualize()to visualize the specific information collected according to the specific kind of Store. Currently, these Stores call this method:LockStore,NullnessStore, andInitializationStoreto visualize additional information.- Parameters:
keyName- the name of the specific information to be visualizedvalue- the value of the specific information to be visualized- Returns:
- the String representation of the specific information
-
visualizeBlock
Visualize a block based on the analysis.- Parameters:
bb- the blockanalysis- the current analysis- Returns:
- the String representation of the given block
-
visualizeSpecialBlock
Visualize a SpecialBlock.- Parameters:
sbb- the special block- Returns:
- the String representation of the type of the special block
sbb: entry, exit, or exceptional-exit
-
visualizeConditionalBlock
Visualize a ConditionalBlock.- Parameters:
cbb- the conditional block- Returns:
- the String representation of the conditional block
-
visualizeBlockTransferInputBefore
Visualize the transferInput before a Block based on the analysis.- Parameters:
bb- the blockanalysis- the current analysis- Returns:
- the String representation of the transferInput before the given block
-
visualizeBlockTransferInputAfter
Visualize the transferInput after a Block based on the analysis.- Parameters:
bb- the blockanalysis- the current analysis- Returns:
- the String representation of the transferInput after the given block
-
visualizeBlockNode
Visualize a Node based on the analysis.- Parameters:
t- the nodeanalysis- the current analysis- Returns:
- the String representation of the given node
-
shutdown
void shutdown()Shutdown method called once from the shutdown hook of theBaseTypeChecker.
-