<commit_before># vile

[![Circle CI](https://circleci.com/gh/brentlintner/vile.svg?style=svg&circle-token=<PASSWORD>)](https://circleci.com/gh/brentlintner/vile)
[![NPM version](https://badge.fury.io/js/vile.svg)](http://badge.fury.io/js/vile)
[![Gem Version](https://badge.fury.io/rb/vile.svg)](http://badge.fury.io/rb/vile)

A punishing, yet easy to use tool for writing insightful code.

It can be used to run all types of analysis and checks via one top level package.

## Goal

The goal of the project is not to compete with or replace existing
analysis tools, but to support them unobstrusively as possible,
and even compliment them, while presenting the information in
a unified, project focused context.

## Requirements

- [NodeJS](http://nodejs.org)
- [Pygments](http://pygments.org) (for web reports)

## Installation

Since Vile's core is written in JS, the main project
is distributed via [npm](http://npmjs.org):

    npm install vile

There is also a ruby [gem](ruby/):

    gem install vile

#### Node CLI

    npm install -g vile
    vile --help

#### Node API

```javascript
require("vile")
  .exec()
  .then((issues) => { })
```

You can also do more complex things:

```javascript
let vile_config = { } // your .vile.yml
require("vile")
  .exec(null, vile_config)
  .then((issues) => { })
```

Until API docs are a thing.. look more into the [src](src/)
to find out more about the main library. The
[cli](src/cli.coffee) module is a good starting place,
along with the [main library](src/index.coffee) module.

## Plugins

To actually punish your code, you need to install plugins first.

For a complete list of plugins, see [here](http://github.com/brentlintner/vile-plugins);

**STOP!!!** Currently, the `npm install` method below does not work,
until they are actually published.

Instead:

    git clone <EMAIL>:brentlintner/vile-plugins.git
    git clone <EMAIL>:brentlintner/vile.git
    cd vile
    for pkg in ../vile-plugins/vile-*; do npm link $pkg; done

Then you can add a `plugins: []` entry to `.vile.yml`, or just use the
CLI to specify a custom set, ex: `vile -p rubocop,reek`.

----------------

To get started, install a plugin package in your project root:

Example:

    cd into_my_project
    npm install vile-eslint

Then just run:

    vile -p

The CLI will look up any installed plugins and automatically
pull them in and run their checks.

You can also specify a white-list of installed plugins to only run:
<commit_msg>README should reflect current state of installing plugins.<commit_after># vile

[![Circle CI](https://circleci.com/gh/brentlintner/vile.svg?style=svg&circle-token=<PASSWORD>)](https://circleci.com/gh/brentlintner/vile)
[![NPM version](https://badge.fury.io/js/vile.svg)](http://badge.fury.io/js/vile)
[![Gem Version](https://badge.fury.io/rb/vile.svg)](http://badge.fury.io/rb/vile)

A punishing, yet easy to use tool for writing insightful code.

It can be used to run all types of analysis and checks via one top level package.

## Goal

The goal of the project is not to compete with or replace existing
analysis tools, but to support them unobstrusively as possible,
and even compliment them, while presenting the information in
a unified, project focused context.

## Requirements

- [NodeJS](http://nodejs.org)
- [Pygments](http://pygments.org) (for web reports)

## Installation

Since Vile's core is written in JS, the main project
is distributed via [npm](http://npmjs.org):

    npm install vile

There is also a ruby [gem](ruby/):

    gem install vile

#### Node CLI

    npm install -g vile
    vile --help

#### Node API

```javascript
require("vile")
  .exec()
  .then((issues) => { })
```

You can also do more complex things:

```javascript
let vile_config = { } // your .vile.yml
require("vile")
  .exec(null, vile_config)
  .then((issues) => { })
```

Until API docs are a thing.. look more into the [src](src/)
to find out more about the main library. The
[cli](src/cli.coffee) module is a good starting place,
along with the [main library](src/index.coffee) module.

## Plugins

To actually punish your code, you need to install plugins first.

For a complete list of plugins, see [here](http://github.com/brentlintner/vile-plugins);

**STOP!!!** Currently, the `npm install` method below does not work,
until they are actually published.

Instead:

    mkdir vile
    cd vile
    git clone git@github.com:brentlintner/vile-plugins.git plugins
    git clone git@github.com:brentlintner/vile.git lib
    cd lib
    for pkg in ../plugins/vile-*; do npm link $pkg; done

Then you can add a `plugins: []` entry to `.vile.yml`, or just use the
CLI to specify a custom set, ex: `vile -p rubocop,reek`.

----------------

To get started, install a plugin package in your project root:

Example:

    cd into_my_project
    npm install vile-eslint

Then just run:

    vile -p

The CLI will look up any installed plugins and automatically
pull them in and run their checks.

You can also specify a white-list of installed plugins to only run:

{'fraction_non_alphanumeric': 0.12470119521912351, 'fraction_numerical': 0.0, 'mean_word_length': 3.701310861423221, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 11, 'https://': 8, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 2, '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': '35638', 'n_tokens_mistral': 1679, 'n_tokens_neox': 1594, 'n_words': 605}