Skip to content

Commit

Permalink
Merge pull request #319 from lisa-analyzer/html-visualizer-rework
Browse files Browse the repository at this point in the history
Html visualizer rework
  • Loading branch information
lucaneg authored Aug 16, 2024
2 parents c90a000 + 48ce04b commit 8e472bb
Show file tree
Hide file tree
Showing 102 changed files with 8,794 additions and 26,901 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@
"files" : [ "report.json", "untyped_A.A(A__this)_-1778639473.dot", "untyped_A.getOne(A__this)_-1778621183.dot", "untyped_A.getPositive(A__this,_untyped_i)_-1778620222.dot", "untyped_A.identity(A__this,_untyped_i)_-1081452707.dot", "untyped_A.identity(A__this,_untyped_i)_-1778620129.dot", "untyped_A.identity(A__this,_untyped_i)_-1778624996.dot", "untyped_tests.helper(tests__this,_untyped_i,_untyped_dispatcher)_-1778625864.dot", "untyped_tests.main(tests__this).dot" ],
"info" : {
"cfgs" : "6",
"duration" : "59ms",
"end" : "2023-12-05T13:01:59.193+01:00",
"duration" : "406ms",
"end" : "2024-08-16T14:46:59.662+02:00",
"expressions" : "49",
"files" : "8",
"globals" : "0",
"members" : "6",
"programs" : "1",
"start" : "2023-12-05T13:01:59.134+01:00",
"start" : "2024-08-16T14:46:59.256+02:00",
"statements" : "21",
"units" : "2",
"version" : "0.1b8",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
digraph {
labelloc="t";
label="untyped A::A(A* this)";
"node0" [shape="rect",color="black",label=<i1 = 0<BR/><BR/>{ expressions: [i1],<BR/>state: { heap: monolith,<BR/>type: { ['imp-testcases/visualization/visualization.imp':29:22]:$lisareceiver: [A*],<BR/>['imp-testcases/visualization/visualization.imp':29:22]:this: [tests*],<BR/>i1: [int32],<BR/>this: [A*] },<BR/>value: { i1: [0, 0] }<BR/> }<BR/> }<BR/>>];
"node3" [shape="rect",color="black",peripheries="2",label=<ret<BR/><BR/>{ expressions: [skip],<BR/>state: { heap: monolith,<BR/>type: { ['imp-testcases/visualization/visualization.imp':29:22]:$lisareceiver: [A*],<BR/>['imp-testcases/visualization/visualization.imp':29:22]:this: [tests*],<BR/>i1: [int32],<BR/>this: [A*] },<BR/>value: { i1: [0, 0] }<BR/> }<BR/> }<BR/>>];
"node0" -> "node3" [color="black"];
subgraph cluster_legend {
label="Legend";
style=dotted;
node [shape=plaintext];
"legend" [label=<<table border="0" cellpadding="2" cellspacing="0" cellborder="0"><tr><td align="right">node border&nbsp;</td><td align="left"><font color="gray">gray</font>, single</td></tr><tr><td align="right">entrypoint border&nbsp;</td><td align="left"><font color="black">black</font>, single</td></tr><tr><td align="right">exitpoint border&nbsp;</td><td align="left"><font color="black">black</font>, double</td></tr><tr><td align="right">sequential edge&nbsp;</td><td align="left"><font color="black">black</font>, solid</td></tr><tr><td align="right">true edge&nbsp;</td><td align="left"><font color="blue">blue</font>, dashed</td></tr><tr><td align="right">false edge&nbsp;</td><td align="left"><font color="red">red</font>, dashed</td></tr></table>>];
}

digraph "untyped A::A(A* this)" {
edge ["dir"="forward"]
graph ["label"="untyped A::A(A* this)","labelloc"="t"]
"node0" ["label"=<i1 = 0<br/><br/>{ expressions: [i1],<br/>state: { heap: monolith,<br/>type: { ['imp-testcases/visualization/visualization.imp':29:22]:$lisareceiver: [A*],<br/>['imp-testcases/visualization/visualization.imp':29:22]:this: [tests*],<br/>i1: [int32],<br/>this: [A*] },<br/>value: { i1: [0, 0] }<br/> }<br/> }<br/>>,"shape"="rect","id"="node0","color"="black","style"="dashed"]
"node3" ["label"=<ret<br/><br/>{ expressions: [skip],<br/>state: { heap: monolith,<br/>type: { ['imp-testcases/visualization/visualization.imp':29:22]:$lisareceiver: [A*],<br/>['imp-testcases/visualization/visualization.imp':29:22]:this: [tests*],<br/>i1: [int32],<br/>this: [A*] },<br/>value: { i1: [0, 0] }<br/> }<br/> }<br/>>,"shape"="rect","id"="node3","color"="black"]
subgraph "cluster_legend" {
edge ["dir"="none"]
graph ["label"=<Legend>,"style"="dotted"]
"legend" ["label"=<<table border="0" cellpadding="2" cellspacing="0" cellborder="0"><tr><td align="right">node border&nbsp;</td><td align="left"><font color="gray">gray</font>, single</td></tr><tr><td align="right">entrypoint border&nbsp;</td><td align="left"><font color="black">black</font>, dashed</td></tr><tr><td align="right">exitpoint border&nbsp;</td><td align="left"><font color="black">black</font>, solid</td></tr><tr><td align="right">sequential edge&nbsp;</td><td align="left"><font color="black">black</font>, solid</td></tr><tr><td align="right">true edge&nbsp;</td><td align="left"><font color="blue">blue</font>, dashed</td></tr><tr><td align="right">false edge&nbsp;</td><td align="left"><font color="red">red</font>, dashed</td></tr></table>>,"shape"="none"]
}
"node0" -> "node3" ["color"="black"]
}
Original file line number Diff line number Diff line change
@@ -1,21 +1,19 @@
digraph {
labelloc="t";
label="untyped A::getOne(A* this)";
"node0" [shape="rect",color="black",label=<rec = new tests()<BR/><BR/>{ expressions: [rec],<BR/>state: { heap: monolith,<BR/>type: { heap[w]:heap: [tests],<BR/>rec: [tests*] },<BR/>value: #TOP# }<BR/> }<BR/>>];
"node3" [shape="rect",color="gray",label=<x = open(rec)<BR/><BR/>{ expressions: [x],<BR/>state: { heap: monolith,<BR/>type: { x: #TOP# },<BR/>value: { x: [-Inf, +Inf] }<BR/> }<BR/> }<BR/>>];
"node7" [shape="rect",color="gray",label=<&lt;(x, 10)<BR/><BR/>{ expressions: [x &lt; 10],<BR/>state: { heap: monolith,<BR/>type: { x: #TOP# },<BR/>value: { x: [-Inf, +Inf] }<BR/> }<BR/> }<BR/>>];
"node10" [shape="rect",color="gray",label=<x = +(x, 1)<BR/><BR/>{ expressions: [x],<BR/>state: { heap: monolith,<BR/>type: { x: [float32, int32] },<BR/>value: { x: [-Inf, 10] }<BR/> }<BR/> }<BR/>>];
"node15" [shape="rect",color="black",peripheries="2",label=<return 1<BR/><BR/>{ expressions: [ret_value@getOne],<BR/>state: { heap: monolith,<BR/>type: { ret_value@getOne: [int32],<BR/>x: #TOP# },<BR/>value: { ret_value@getOne: [1, 1],<BR/>x: [10, +Inf] }<BR/> }<BR/> }<BR/>>];
"node0" -> "node3" [color="black"];
"node3" -> "node7" [color="black"];
"node7" -> "node10" [color="blue",style="dashed"];
"node7" -> "node15" [color="red",style="dashed"];
"node10" -> "node7" [color="black"];
subgraph cluster_legend {
label="Legend";
style=dotted;
node [shape=plaintext];
"legend" [label=<<table border="0" cellpadding="2" cellspacing="0" cellborder="0"><tr><td align="right">node border&nbsp;</td><td align="left"><font color="gray">gray</font>, single</td></tr><tr><td align="right">entrypoint border&nbsp;</td><td align="left"><font color="black">black</font>, single</td></tr><tr><td align="right">exitpoint border&nbsp;</td><td align="left"><font color="black">black</font>, double</td></tr><tr><td align="right">sequential edge&nbsp;</td><td align="left"><font color="black">black</font>, solid</td></tr><tr><td align="right">true edge&nbsp;</td><td align="left"><font color="blue">blue</font>, dashed</td></tr><tr><td align="right">false edge&nbsp;</td><td align="left"><font color="red">red</font>, dashed</td></tr></table>>];
}

digraph "untyped A::getOne(A* this)" {
edge ["dir"="forward"]
graph ["label"="untyped A::getOne(A* this)","labelloc"="t"]
"node0" ["label"=<rec = new tests()<br/><br/>{ expressions: [rec],<br/>state: { heap: monolith,<br/>type: { heap[w]:heap: [tests],<br/>rec: [tests*] },<br/>value: #TOP# }<br/> }<br/>>,"shape"="rect","id"="node0","color"="black","style"="dashed"]
"node3" ["label"=<x = open(rec)<br/><br/>{ expressions: [x],<br/>state: { heap: monolith,<br/>type: { x: #TOP# },<br/>value: { x: [-Inf, +Inf] }<br/> }<br/> }<br/>>,"shape"="rect","id"="node3","color"="gray"]
"node7" ["label"=<&lt;(x, 10)<br/><br/>{ expressions: [x &lt; 10],<br/>state: { heap: monolith,<br/>type: { x: #TOP# },<br/>value: { x: [-Inf, +Inf] }<br/> }<br/> }<br/>>,"shape"="rect","id"="node7","color"="gray"]
"node10" ["label"=<x = +(x, 1)<br/><br/>{ expressions: [x],<br/>state: { heap: monolith,<br/>type: { x: [float32, int32] },<br/>value: { x: [-Inf, 10] }<br/> }<br/> }<br/>>,"shape"="rect","id"="node10","color"="gray"]
"node15" ["label"=<return 1<br/><br/>{ expressions: [ret_value@getOne],<br/>state: { heap: monolith,<br/>type: { ret_value@getOne: [int32],<br/>x: #TOP# },<br/>value: { ret_value@getOne: [1, 1],<br/>x: [10, +Inf] }<br/> }<br/> }<br/>>,"shape"="rect","id"="node15","color"="black"]
subgraph "cluster_legend" {
edge ["dir"="none"]
graph ["label"=<Legend>,"style"="dotted"]
"legend" ["label"=<<table border="0" cellpadding="2" cellspacing="0" cellborder="0"><tr><td align="right">node border&nbsp;</td><td align="left"><font color="gray">gray</font>, single</td></tr><tr><td align="right">entrypoint border&nbsp;</td><td align="left"><font color="black">black</font>, dashed</td></tr><tr><td align="right">exitpoint border&nbsp;</td><td align="left"><font color="black">black</font>, solid</td></tr><tr><td align="right">sequential edge&nbsp;</td><td align="left"><font color="black">black</font>, solid</td></tr><tr><td align="right">true edge&nbsp;</td><td align="left"><font color="blue">blue</font>, dashed</td></tr><tr><td align="right">false edge&nbsp;</td><td align="left"><font color="red">red</font>, dashed</td></tr></table>>,"shape"="none"]
}
"node0" -> "node3" ["color"="black"]
"node3" -> "node7" ["color"="black"]
"node7" -> "node15" ["style"="dashed","color"="red"]
"node7" -> "node10" ["style"="dashed","color"="blue"]
"node10" -> "node7" ["color"="black"]
}
Original file line number Diff line number Diff line change
@@ -1,19 +1,17 @@
digraph {
labelloc="t";
label="untyped A::getPositive(A* this, untyped i)";
"node0" [shape="rect",color="black",label=<&lt;=(i, 0)<BR/><BR/>{ expressions: [i &lt;= 0],<BR/>state: { heap: monolith,<BR/>type: { ['imp-testcases/visualization/visualization.imp':30:42]:call_ret_value@'imp-testcases/visualization/visualization.imp':30:41: [int32],<BR/>i: [int32],<BR/>this: #TOP# },<BR/>value: { ['imp-testcases/visualization/visualization.imp':30:42]:call_ret_value@'imp-testcases/visualization/visualization.imp':30:41: [1, 1],<BR/>i: [1, 1],<BR/>this: [-Inf, +Inf] }<BR/> }<BR/> }<BR/>>];
"node3" [shape="rect",color="gray",label=<i = 1<BR/><BR/>{ expressions: [i],<BR/>state: { heap: monolith,<BR/>type: _|_,<BR/>value: _|_ }<BR/> }<BR/>>];
"node6" [shape="rect",color="gray",label=<i = 10<BR/><BR/>{ expressions: [i],<BR/>state: { heap: monolith,<BR/>type: { ['imp-testcases/visualization/visualization.imp':30:42]:call_ret_value@'imp-testcases/visualization/visualization.imp':30:41: [int32],<BR/>i: [int32],<BR/>this: #TOP# },<BR/>value: { ['imp-testcases/visualization/visualization.imp':30:42]:call_ret_value@'imp-testcases/visualization/visualization.imp':30:41: [1, 1],<BR/>i: [10, 10],<BR/>this: [-Inf, +Inf] }<BR/> }<BR/> }<BR/>>];
"node9" [shape="rect",color="black",peripheries="2",label=<return i<BR/><BR/>{ expressions: [ret_value@getPositive],<BR/>state: { heap: monolith,<BR/>type: { ['imp-testcases/visualization/visualization.imp':30:42]:call_ret_value@'imp-testcases/visualization/visualization.imp':30:41: [int32],<BR/>i: [int32],<BR/>ret_value@getPositive: [int32],<BR/>this: #TOP# },<BR/>value: { ['imp-testcases/visualization/visualization.imp':30:42]:call_ret_value@'imp-testcases/visualization/visualization.imp':30:41: [1, 1],<BR/>i: [10, 10],<BR/>ret_value@getPositive: [10, 10],<BR/>this: [-Inf, +Inf] }<BR/> }<BR/> }<BR/>>];
"node0" -> "node3" [color="blue",style="dashed"];
"node0" -> "node6" [color="red",style="dashed"];
"node3" -> "node9" [color="black"];
"node6" -> "node9" [color="black"];
subgraph cluster_legend {
label="Legend";
style=dotted;
node [shape=plaintext];
"legend" [label=<<table border="0" cellpadding="2" cellspacing="0" cellborder="0"><tr><td align="right">node border&nbsp;</td><td align="left"><font color="gray">gray</font>, single</td></tr><tr><td align="right">entrypoint border&nbsp;</td><td align="left"><font color="black">black</font>, single</td></tr><tr><td align="right">exitpoint border&nbsp;</td><td align="left"><font color="black">black</font>, double</td></tr><tr><td align="right">sequential edge&nbsp;</td><td align="left"><font color="black">black</font>, solid</td></tr><tr><td align="right">true edge&nbsp;</td><td align="left"><font color="blue">blue</font>, dashed</td></tr><tr><td align="right">false edge&nbsp;</td><td align="left"><font color="red">red</font>, dashed</td></tr></table>>];
}

digraph "untyped A::getPositive(A* this, untyped i)" {
edge ["dir"="forward"]
graph ["label"="untyped A::getPositive(A* this, untyped i)","labelloc"="t"]
"node0" ["label"=<&lt;=(i, 0)<br/><br/>{ expressions: [i &lt;= 0],<br/>state: { heap: monolith,<br/>type: { ['imp-testcases/visualization/visualization.imp':30:42]:call_ret_value@'imp-testcases/visualization/visualization.imp':30:41: [int32],<br/>i: [int32],<br/>this: #TOP# },<br/>value: { ['imp-testcases/visualization/visualization.imp':30:42]:call_ret_value@'imp-testcases/visualization/visualization.imp':30:41: [1, 1],<br/>i: [1, 1],<br/>this: [-Inf, +Inf] }<br/> }<br/> }<br/>>,"shape"="rect","id"="node0","color"="black","style"="dashed"]
"node3" ["label"=<i = 1<br/><br/>{ expressions: [i],<br/>state: { heap: monolith,<br/>type: _|_,<br/>value: _|_ }<br/> }<br/>>,"shape"="rect","id"="node3","color"="gray"]
"node6" ["label"=<i = 10<br/><br/>{ expressions: [i],<br/>state: { heap: monolith,<br/>type: { ['imp-testcases/visualization/visualization.imp':30:42]:call_ret_value@'imp-testcases/visualization/visualization.imp':30:41: [int32],<br/>i: [int32],<br/>this: #TOP# },<br/>value: { ['imp-testcases/visualization/visualization.imp':30:42]:call_ret_value@'imp-testcases/visualization/visualization.imp':30:41: [1, 1],<br/>i: [10, 10],<br/>this: [-Inf, +Inf] }<br/> }<br/> }<br/>>,"shape"="rect","id"="node6","color"="gray"]
"node9" ["label"=<return i<br/><br/>{ expressions: [ret_value@getPositive],<br/>state: { heap: monolith,<br/>type: { ['imp-testcases/visualization/visualization.imp':30:42]:call_ret_value@'imp-testcases/visualization/visualization.imp':30:41: [int32],<br/>i: [int32],<br/>ret_value@getPositive: [int32],<br/>this: #TOP# },<br/>value: { ['imp-testcases/visualization/visualization.imp':30:42]:call_ret_value@'imp-testcases/visualization/visualization.imp':30:41: [1, 1],<br/>i: [10, 10],<br/>ret_value@getPositive: [10, 10],<br/>this: [-Inf, +Inf] }<br/> }<br/> }<br/>>,"shape"="rect","id"="node9","color"="black"]
subgraph "cluster_legend" {
edge ["dir"="none"]
graph ["label"=<Legend>,"style"="dotted"]
"legend" ["label"=<<table border="0" cellpadding="2" cellspacing="0" cellborder="0"><tr><td align="right">node border&nbsp;</td><td align="left"><font color="gray">gray</font>, single</td></tr><tr><td align="right">entrypoint border&nbsp;</td><td align="left"><font color="black">black</font>, dashed</td></tr><tr><td align="right">exitpoint border&nbsp;</td><td align="left"><font color="black">black</font>, solid</td></tr><tr><td align="right">sequential edge&nbsp;</td><td align="left"><font color="black">black</font>, solid</td></tr><tr><td align="right">true edge&nbsp;</td><td align="left"><font color="blue">blue</font>, dashed</td></tr><tr><td align="right">false edge&nbsp;</td><td align="left"><font color="red">red</font>, dashed</td></tr></table>>,"shape"="none"]
}
"node0" -> "node6" ["style"="dashed","color"="red"]
"node0" -> "node3" ["style"="dashed","color"="blue"]
"node3" -> "node9" ["color"="black"]
"node6" -> "node9" ["color"="black"]
}
Loading

0 comments on commit 8e472bb

Please sign in to comment.