Add GraphPrinter plugin for DOT format graph output - #805
Draft
bahnwaerter wants to merge 1 commit into
Draft
bahnwaerter wants to merge 1 commit into
bahnwaerter wants to merge 1 commit into
Conversation
Create a new GraphPrinter plugin that prints IElement data structures
(AST, CFG, interpolant automata, etc.) in DOT (Graphviz) format to files.
The plugin works like JungVisualization but is headless (isGuiRequired()
returns false), making it usable in both GUI and CLI modes.
The plugin uses the same IVisualizable -> VisualizationNode -> DFS traversal
pattern as JungVisualization, but writes DOT output to a file instead of
displaying in a JUNG viewer. Node labels use the full object's toString()
without truncation.
Preferences follow Ultimate's well-known dump pattern:
- Graph directory (default: current directory)
- Graph filename (default: "graph")
- Write graph besides input file (default: true)
- Which models to print (default: LAST, configurable like JungVisualization)
An annotation output mode controls how metadata and annotations from
VisualizationNode and VisualizationEdge payloads are included in the DOT
output:
- NONE: no annotations in the output (like before)
- HTML_LABELS: annotations are embedded as DOT HTML-like labels on nodes
and edges, showing the label followed by an HTML table of
all annotation key-value pairs (default mode)
- RECORD_NODES: annotations are rendered as separate record nodes
connected to their parent node/edge with dashed edges
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Create a new GraphPrinter plugin that prints
IElementdata structures (AST, CFG, interpolant automata, etc.) in DOT (Graphviz) format to files. The plugin works likeJungVisualizationbut is headless (isGuiRequired()returns false), making it usable in both GUI and CLI modes.The plugin uses the same
IVisualizable->VisualizationNode->DFS traversalpattern asJungVisualization, but writes DOT output to a file instead of displaying in a JUNG viewer. Node labels use the full object'stoString()without truncation.Preferences follow Ultimate's well-known dump pattern:
LAST, configurable likeJungVisualization)An annotation output mode controls how metadata and annotations from
VisualizationNodeandVisualizationEdgepayloads are included in the DOT output:NONE: no annotations in the output (like before)HTML_LABELS: annotations are embedded as DOT HTML-like labels on nodes and edges, showing the label followed by an HTML table of all annotation key-value pairs (default mode)RECORD_NODES: annotations are rendered as separate record nodes connected to their parent node/edge with dashed edges