How JavaScript Studio works

The analyzer will parse your source code into an AST. It will then evaluate the AST dynamically, trying to reach every possible execution branch. If a global entry point is specified, every exposed function will be evaluated, including functions that are returned by other functions. This allows to automatically scan the entire API of a library. The number of unique AST nodes and exposed functions that have been effectively analyzed are shown in each report.

Call tree

Each report visualizes how JavaScript Studio crawled your source code. It shows the exposed API and where exceptions are thrown.

• test() index.js
[click Event]

More call tree examples

Runtime errors

JavaScript Studio can find runtime errors without any test data or type annotations. No source code changes are required.

function test(arg) {
  if ( === '[object Boolean]') {
    return arg.substring(1); // TypeError: substring is not a function

More runtime error examples

Event handlers

Events are invoked automatically. No manual event triggers or configuration is required.

function test() {
  document.body.addEventListener('click', function (event) {
    event.avoidPropagation(); // TypeError: avoidPropagation is not a function

More about event handlers


Timers are fired in the virtual execution environment without the need wait for long timeouts.

function test() {
  setTimeout(function () {
    location.refresh(); // TypeError: refresh is not a function
  }, 60000);

More about timers