<commit_before>[![Build Status](https://travis-ci.org/ExpoSEJS/ExpoSE.svg?branch=master)](https://travis-ci.org/ExpoSEJS/ExpoSE)

## ExpoSE

ExpoSE is a dynamic symbolic execution engine for JavaScript, developed at Royal Holloway, University of London by [<NAME>](https://www.parsed.uk), <NAME>, and [<NAME>](https://www.unibw.de/patch) (now at [Bundeswehr University Munich](https://www.unibw.de/)). 
ExpoSE supports symbolic execution of Node.js programs and JavaScript in the browser. ExpoSE is based on Jalangi2 and the Z3 SMT solver.

### Requirements

Requires `node` version v7.5.0 (other versions may work but are not tested), `npm`, `clang` (with `clang++`), `gnuplot` (for coverage graphs), `make`, `python2` (as python in path).

`mitmproxy` (Depends libxml2-dev, libxslt-dev, libssl-dev) is required for electron analysis.

### Installation

Execute `npm install` inside the ExpoSE directory for a clean installation.

### ExpoSE GUI

In most cases you want to start by running the ExpoSE dashboard. The GUI provides detailed test case information, easy replay, and coverage graphs. Start the ExpoSE dashboard with

```sh
$ npm start
```

### ExpoSE CLI

Alternatively, you can invoke ExpoSE directly via the `expoSE` command line interface.

Example:

```sh
$ expoSE ./tests/integers/infoflow
```
<commit_msg>doc/readme - update test case path<commit_after>[![Build Status](https://travis-ci.org/ExpoSEJS/ExpoSE.svg?branch=master)](https://travis-ci.org/ExpoSEJS/ExpoSE)

## ExpoSE

ExpoSE is a dynamic symbolic execution engine for JavaScript, developed at Royal Holloway, University of London by [<NAME>](https://www.parsed.uk), Duncan Mitchell, and [<NAME>](https://www.unibw.de/patch) (now at [Bundeswehr University Munich](https://www.unibw.de/)). 
ExpoSE supports symbolic execution of Node.js programs and JavaScript in the browser. ExpoSE is based on Jalangi2 and the Z3 SMT solver.

### Requirements

Requires `node` version v7.5.0 (other versions may work but are not tested), `npm`, `clang` (with `clang++`), `gnuplot` (for coverage graphs), `make`, `python2` (as python in path).

`mitmproxy` (Depends libxml2-dev, libxslt-dev, libssl-dev) is required for electron analysis.

### Installation

Execute `npm install` inside the ExpoSE directory for a clean installation.

### ExpoSE GUI

In most cases you want to start by running the ExpoSE dashboard. The GUI provides detailed test case information, easy replay, and coverage graphs. Start the ExpoSE dashboard with

```sh
$ npm start
```

### ExpoSE CLI

Alternatively, you can invoke ExpoSE directly via the `expoSE` command line interface.

Example:

```sh
$ expoSE ./tests/numbers/infoflow
```

{'fraction_non_alphanumeric': 0.11962616822429907, 'fraction_numerical': 0.005233644859813084, 'mean_word_length': 4.9072847682119205, 'pattern_counts': {'":': 0, '<': 8, '<?xml version=': 0, '>': 8, 'https://': 10, 'lorem ipsum': 0, 'www.': 6, 'xml': 2}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '841550', 'n_tokens_mistral': 877, 'n_tokens_neox': 829, 'n_words': 309}