Policial :cop:

Gem Version Build Status Dependency Status

Policial is a gem that investigates pull requests and accuses style guide violations. It is based on thoughtbot's Hound project. It currently supports Ruby, SCSS and CoffeeScript.

Installation

Add this line to your application's Gemfile:

gem 'policial'

And then execute:

$ bundle

Or install it yourself as:

$ gem install policial

Usage

  1. First, instantiate a new Detective: ruby detective = Policial::Detective.new

You might need to pass an Octokit client with your GitHub credentials. For more information on this please check the Octokit README.

  octokit = Octokit::Client.new(access_token: 'mygithubtoken666')
  detective = Policial::Detective.new(octokit)

If you don't pass an Octokit client Policial will use the global Octokit configuration.

  1. Let's investigate! Start by briefing your detective about the pull request it will run an investigation against. You can setup a pull request manually:
  detective.brief(
    repo: 'volmer/my_repo',
    number: 3,
    head_sha: 'headsha'
  )

Or you can brief it with a GitHub pull_request webhook:

  event = Policial::PullRequestEvent.new(webhook_payload)
  detective.brief(event)
  1. Now you can run the investigation:
  # Let's investigate this pull request...
  detective.investigate

  # Want to know the violations found?
  detective.violations
  1. Want to know the violations found? ```ruby violations = detective.violations # => [#]

violations.first.message "Prefer single-quoted strings when you don't need string interpolation or special symbols."


## Ruby

You can setup your Ruby code style rules with a `.rubocop.yml` file in
your repo. Please see [RuboCop's README](https://github.com/bbatsov/rubocop).

## CoffeeScript

You can setup your CoffeeScript code style rules with a `coffeelint.json`
file in your repo. For more information on how customize the linter rules please
visit the [Coffeelint website](https://coffelint.org).

## SCSS

SCSS linting is disabled by default. To enable it, you need to install the
[SCSS-Lint](https://github.com/brigade/scss-lint) gem:

gem install scss_lint


Or add the following to your `Gemfile` and run `bundle install`:

```ruby
gem 'scss_lint', require: false

The require: false is necessary because scss-lint monkey patches Sass. More info here.

Now you can enable SCSS on Policial:

Policial.style_guides << Policial::StyleGuides::Scss

You can setup your SCSS code style rules with a .scss-lint.yml file in your repo. For more information on how customize the linter rules please read SCSS-Lint's README.

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request