esgraph

creates a control flow graph from an esprima abstract syntax tree

npm install esgraph
9 downloads in the last week
24 downloads in the last month

esgraph

creates a control flow graph from an esprima abstract syntax tree

Build Status Coverage Status Dependency Status

Installation

$ npm install esgraph

Usage

esgraph

The esgraph binary reads from stdin and outputs dot-format usable by graphviz. To create a png file showing the CFG of a js file:

$ cat $file | esgraph | dot -Tpng > output.png

example graph

library

var esgraph = require('esgraph');

var cfg = esgraph(esprima.parse(source, {range: true}));
// cfg[0] is the start node
// cfg[1] is the end node
// cfg[2] is an array of all nodes for easier iteration

// each node has:
node.astNode; // this is the original esprima AST node, either a statement or an expression
node.prev; // an array of predecessor nodes
node.next; // an array of all successor nodes

// the successor nodes are also awailable by type:
node.normal; // the next statement reached via normal flow
node.true; // the next statement reached when `node.astNode` evaluates to true
node.false; // the next statement reached when `node.astNode` evaluates to false
node.exception; // the next statement reached when `node.astNode` throws


var dot = esgraph.dot(cfg, {counter: startCount, source: source});
// returns the cfg printed in graphviz dot format.
node.label // can be used to use a custom label for that node
// otherwise `esgraph.dot` will print the nodes source when the ast is created
// with {range: true} and {source: source} option is set

License

LGPLv3

npm loves you