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 analysis
- S- the store type used in the analysis
- T- 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 SummaryModifier 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- 
initInitialization 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
 
- 
getSeparatorString 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 visualize
- entry- the entry node of the control flow graph to be represented
- analysis- an analysis containing information about the program represented by the CFG. The information includes- Stores that are valid at the beginning of basic blocks reachable from- entryand per-node information for value producing- Nodes. Can also be- nullto 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)
 
- 
visualizeStoreDelegate 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
 
- 
visualizeStoreLocalVarCalled byCFAbstractStore#internalVisualize()to visualize a local variable.- Parameters:
- localVar- the local variable
- value- the value of the local variable
- Returns:
- the String representation of the local variable
 
- 
visualizeStoreThisValCalled byCFAbstractStore#internalVisualize()to visualize the value of the current objectthisin this Store.- Parameters:
- value- the value of the current object- this
- Returns:
- the String representation of this
 
- 
visualizeStoreFieldValCalled byCFAbstractStore#internalVisualize()to visualize the value of one field collected by this Store.- Parameters:
- fieldAccess- the field
- value- the value of the field
- Returns:
- the String representation of the field
 
- 
visualizeStoreArrayValCalled byCFAbstractStore#internalVisualize()to visualize the value of one array collected by this Store.- Parameters:
- arrayValue- the array
- value- the value of the array
- Returns:
- the String representation of the array
 
- 
visualizeStoreMethodValsCalled byCFAbstractStore#internalVisualize()to visualize the value of pure method calls collected by this Store.- Parameters:
- methodCall- the pure method call
- value- the value of the pure method call
- Returns:
- the String representation of the pure method call
 
- 
visualizeStoreClassValsCalled byCFAbstractStore#internalVisualize()to visualize the value of class names collected by this Store.- Parameters:
- className- the class name
- value- the value of the class name
- Returns:
- the String representation of the class name
 
- 
visualizeStoreKeyValCalled 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 visualized
- value- the value of the specific information to be visualized
- Returns:
- the String representation of the specific information
 
- 
visualizeBlockVisualize a block based on the analysis.- Parameters:
- bb- the block
- analysis- the current analysis
- Returns:
- the String representation of the given block
 
- 
visualizeSpecialBlockVisualize a SpecialBlock.- Parameters:
- sbb- the special block
- Returns:
- the String representation of the type of the special block sbb: entry, exit, or exceptional-exit
 
- 
visualizeConditionalBlockVisualize a ConditionalBlock.- Parameters:
- cbb- the conditional block
- Returns:
- the String representation of the conditional block
 
- 
visualizeBlockTransferInputBeforeVisualize the transferInput before a Block based on the analysis.- Parameters:
- bb- the block
- analysis- the current analysis
- Returns:
- the String representation of the transferInput before the given block
 
- 
visualizeBlockTransferInputAfterVisualize the transferInput after a Block based on the analysis.- Parameters:
- bb- the block
- analysis- the current analysis
- Returns:
- the String representation of the transferInput after the given block
 
- 
visualizeBlockNodeVisualize a Node based on the analysis.- Parameters:
- t- the node
- analysis- the current analysis
- Returns:
- the String representation of the given node
 
- 
shutdownvoid shutdown()Shutdown method called once from the shutdown hook of theBaseTypeChecker.
 
-