Class StringCFGVisualizer<V extends AbstractValue<V>,S extends Store<S>,T extends TransferFunction<V,S>>
java.lang.Object
org.checkerframework.dataflow.cfg.visualize.AbstractCFGVisualizer<V,S,T>
org.checkerframework.dataflow.cfg.visualize.StringCFGVisualizer<V,S,T>
- All Implemented Interfaces:
CFGVisualizer<V,S, T>
public class StringCFGVisualizer<V extends AbstractValue<V>,S extends Store<S>,T extends TransferFunction<V,S>>
extends AbstractCFGVisualizer<V,S,T>
Generate the String representation of a control flow graph.
-
Nested Class Summary
Nested classes/interfaces inherited from class org.checkerframework.dataflow.cfg.visualize.AbstractCFGVisualizer
AbstractCFGVisualizer.VisualizeWhere -
Field Summary
Fields inherited from class org.checkerframework.dataflow.cfg.visualize.AbstractCFGVisualizer
lineSeparator, storeEntryIndent, verbose -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected StringFormat the given object as a String suitable for the output format, i.e.Returns the separator for lines within a node's representation.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 the transferInput after a Block based on the analysis.Visualize the transferInput before a Block based on the analysis.Visualize a ConditionalBlock.protected StringvisualizeEdge(Object sId, Object eId, String flowRule) Generate the String representation of an edge.protected StringReturn the footer of the generated graph.protected StringReturn the header of the generated graph.visualizeNodes(Set<Block> blocks, ControlFlowGraph cfg, @Nullable Analysis<V, S, T> analysis) Generate the String representation of the nodes of a control flow graph.Visualize a SpecialBlock.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.Methods inherited from class org.checkerframework.dataflow.cfg.visualize.AbstractCFGVisualizer
addBlock, addBlockContent, getNodeSimpleName, getProcessOrder, getProcessOrderSimpleString, handleSuccessorsHelper, init, loopOverBlockContents, visualizeBlockHelper, visualizeBlockNode, visualizeBlockTransferInputHelper, visualizeGraph, visualizeGraphWithoutHeaderAndFooter, visualizeSpecialBlockHelper, visualizeStore
-
Constructor Details
-
StringCFGVisualizer
public StringCFGVisualizer()
-
-
Method Details
-
getSeparator
Description copied from interface:CFGVisualizerReturns the separator for lines within a node's representation.- Returns:
- the separator for lines within a node's representation
-
visualize
public Map<String,Object> visualize(ControlFlowGraph cfg, Block entry, @Nullable Analysis<V, S, T> analysis) Description copied from interface:CFGVisualizerOutput 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)
-
visualizeNodes
public String visualizeNodes(Set<Block> blocks, ControlFlowGraph cfg, @Nullable Analysis<V, S, T> analysis) Description copied from class:AbstractCFGVisualizerGenerate the String representation of the nodes of a control flow graph.- Specified by:
visualizeNodesin classAbstractCFGVisualizer<V extends AbstractValue<V>,S extends Store<S>, T extends TransferFunction<V, S>> - Parameters:
blocks- the set of all the blocks in a control flow graphcfg- the control flow graphanalysis- the current analysis- Returns:
- the String representation of the nodes
-
visualizeEdge
Description copied from class:AbstractCFGVisualizerGenerate the String representation of an edge.- Specified by:
visualizeEdgein classAbstractCFGVisualizer<V extends AbstractValue<V>,S extends Store<S>, T extends TransferFunction<V, S>> - Parameters:
sId- a representation of the current block, such as its IDeId- a representation of the successor block, such as its IDflowRule- the content of the edge- Returns:
- the String representation of the edge
-
visualizeBlock
Description copied from interface:CFGVisualizerVisualize a block based on the analysis.- Parameters:
bb- the blockanalysis- the current analysis- Returns:
- the String representation of the given block
-
visualizeSpecialBlock
Description copied from interface:CFGVisualizerVisualize 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
Description copied from interface:CFGVisualizerVisualize a ConditionalBlock.- Parameters:
cbb- the conditional block- Returns:
- the String representation of the conditional block
-
visualizeBlockTransferInputBefore
Description copied from interface:CFGVisualizerVisualize 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
Description copied from interface:CFGVisualizerVisualize 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
-
format
Description copied from class:AbstractCFGVisualizerFormat the given object as a String suitable for the output format, i.e. with format-specific characters escaped.- Specified by:
formatin classAbstractCFGVisualizer<V extends AbstractValue<V>,S extends Store<S>, T extends TransferFunction<V, S>> - Parameters:
obj- an object- Returns:
- the formatted String from the given object
-
visualizeStoreThisVal
Description copied from interface:CFGVisualizerCalled 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
-
visualizeStoreLocalVar
Description copied from interface:CFGVisualizerCalled 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
-
visualizeStoreFieldVal
Description copied from interface:CFGVisualizerCalled 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
Description copied from interface:CFGVisualizerCalled 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
Description copied from interface:CFGVisualizerCalled 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
Description copied from interface:CFGVisualizerCalled 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
Description copied from interface:CFGVisualizerCalled 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
-
shutdown
public void shutdown()Shutdown method called once from the shutdown hook of theBaseTypeChecker.StringCFGVisualizer does not write into file, so left intentionally blank.
-
visualizeGraphHeader
Return the header of the generated graph.StringCFGVisualizer does not need a specific header, so just return an empty string.
- Specified by:
visualizeGraphHeaderin classAbstractCFGVisualizer<V extends AbstractValue<V>,S extends Store<S>, T extends TransferFunction<V, S>> - Returns:
- the String representation of the header of the control flow graph
-