Dive Services

plugins.dive.range (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

plugins.dive.explorationWindow (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

plugins.dive.nodeId (DATA)

A node identifier in the graph

nodeId ::= number

plugins.dive.callsite (DATA)

A callsite

callsite ::= { "fun" : string , "instr" : number | string }

plugins.dive.callstack (DATA)

The callstack context for a node

callstack ::= callsite []

plugins.dive.nodeLocality (DATA)

The description of a node locality

nodeLocality ::= { "file" : string , "callstack" :? callstack }

plugins.dive.node (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" }

plugins.dive.dependency (DATA)

The dependency between two nodes

dependency ::= { "id" : number , "src" : nodeId , "dst" : nodeId , "kind" : string , "origins" : location [] }

plugins.dive.graphData (DATA)

The whole graph being built

graphData ::= { "nodes" : node [] , "deps" : dependency [] }

plugins.dive.diffData (DATA)

Graph differences from the last action.

diffData ::= { "root" :? nodeId , "add" : { "nodes" : node [] , "deps" : dependency [] } , "sub" : nodeId [] }

plugins.dive.window (SET)

Set the exploration window

input ::= explorationWindow

output ::= null

plugins.dive.graph (GET)

Retrieve the whole graph

input ::= null

output ::= graphData

plugins.dive.clear (EXEC)

Erase the graph and start over with an empty one

input ::= null

output ::= null

plugins.dive.add (EXEC)

Add a node to the graph

input ::= marker

output ::= diffData

plugins.dive.explore (EXEC)

Explore the graph starting from an existing vertex

input ::= nodeId

output ::= diffData

plugins.dive.show (EXEC)

Show the dependencies of an existing vertex

input ::= nodeId

output ::= diffData

plugins.dive.hide (EXEC)

Hide the dependencies of an existing vertex

input ::= nodeId

output ::= diffData