DATA)Parametrization of the exploration range.
range::= {fields…}
| Field | Format | Description |
|---|---|---|
"backward" (opt.) |
number | range for the write dependencies |
"forward" (opt.) |
number | range for the read dependencies |
DATA)Global parametrization of the exploration.
explorationWindow::= {fields…}
| Field | Format | Description |
|---|---|---|
"perception" |
range |
how far dive will explore from root nodes ; must be a finite range |
"horizon" |
range |
range beyond which the nodes must be hidden |
DATA)A node identifier in the graph
nodeId::=number
DATA)A callsite
callsite::={"fun":string ,"instr":number | string}
DATA)The callstack context for a node
DATA)The description of a node locality
nodeLocality::={"file":string ,"callstack":?callstack}
DATA)A graph node
node::={"id":nodeId,"label":string ,"kind":string ,"locality":nodeLocality,"is_root":boolean ,"backward_explored":string ,"forward_explored":string ,"writes":location[],"values":?string ,"range":number | string ,"type":?string ,"taint":?"direct"|"indirect"|"untainted"}
DATA)The dependency between two nodes
dependency::={"id":number ,"src":nodeId,"dst":nodeId,"kind":string ,"origins":location[]}
DATA)The whole graph being built
graphData::={"nodes":node[],"deps":dependency[]}
DATA)Graph differences from the last action.
diffData::={"root":?nodeId,"add":{"nodes":node[],"deps":dependency[]},"sub":nodeId[]}
SET)Set the exploration window
input
::=explorationWindow
output
::=null
GET)Retrieve the whole graph
input
::=null
output
::=graphData
EXEC)Erase the graph and start over with an empty one
input
::=null
output
::=null
EXEC)Add a node to the graph
input
::=marker
output
::=diffData
EXEC)Explore the graph starting from an existing vertex
input
::=nodeId
output
::=diffData
EXEC)Show the dependencies of an existing vertex
input
::=nodeId
output
::=diffData
EXEC)Hide the dependencies of an existing vertex
input
::=nodeId
output
::=diffData