Pronto runs analysis quickly by checking only the relevant changes. Created to be used on pull requests, but also works locally and integrates with GitLab and Bitbucket. Perfect if want to find out quickly if branch introduces changes that conform to your styleguide, are DRY, don't introduce security holes and more.
Pronto's installation is standard for a Ruby gem:
$ gem install pronto
You'll also want to install some runners to go along with the main gem:
$ gem install pronto-rubocop
$ gem install pronto-flay
If you'd rather install Pronto using bundler
, you don't need to require it,
unless you're gonna run it from Ruby (via Rake task, for example):
gem 'pronto'
gem 'pronto-rubocop', require: false
gem 'pronto-flay', require: false
Pronto runs the checks on a diff between the current HEAD and the provided commit-ish (default is master).
Navigate to the repository you want to run Pronto on, and:
git checkout feature/branch
# Analyze diff of committed changes on current branch and master:
pronto run
# Analyze diff of uncommitted changes and master:
pronto run --index
# Analyze *all* changes since the *initial* commit (may take some time):
pronto run --commit=$(git log --pretty=format:%H | tail -1)
Just run pronto
without any arguments to see what Pronto is capable of.
Available Options
Command flag | Description |
---|---|
--exit-code |
Exits with non-zero code if there were any warnings/errors. |
-c/--commit |
Commit for the diff. |
-i/--index |
Analyze changes in git index (staging area). |
-r/--runner |
Run only the passed runners. |
-f/--formatters |
Pick output formatters. |
You can run Pronto as a step of your CI builds and get the results as comments
on GitHub commits using GithubFormatter
or GithubPullRequestFormatter
.
Add Pronto runners you want to use to your Gemfile:
Set the GITHUB_ACCESS_TOKEN environment variable or value in .pronto.yml
to
OAuth token that has access to the repository.
Then just run it:
$ GITHUB_ACCESS_TOKEN=token pronto run -f github -c origin/master
or, if you want comments to appear on pull request diff, instead of commit:
$ GITHUB_ACCESS_TOKEN=token pronto run -f github_pr -c origin/master
Use GithubStatusFormatter
to submit commit status:
$ GITHUB_ACCESS_TOKEN=token pronto run -f github_status -c origin/master
It's possible to combine multiple formatters. To get both pull request comments and commit status summary use:
$ GITHUB_ACCESS_TOKEN=token PULL_REQUEST_ID=id pronto run -f github_status github_pr -c origin/master
As an alternative, you can also set up a rake task:
Pronto::GemNames.new.to_a.each { |gem_name| require "pronto/#{gem_name}" }
formatter = Pronto::Formatter::GithubFormatter.new # or GithubPullRequestFormatter
status_formatter = Pronto::Formatter::GithubStatusFormatter.new
formatters = [formatter, status_formatter]
Pronto.run('origin/master', '.', formatters)
You can run Pronto as a step of your CI builds and get the results as comments
on GitLab commits using GitlabFormatter
.
note: this requires at least GitLab v7.5.0
Set the GITLAB_API_ENDPOINT
environment variable or value in .pronto.yml
to
your API endpoint URL. If you are using Gitlab.com's hosted service your
endpoint will be https://gitlab.com/api/v3
.
Set the GITLAB_API_PRIVATE_TOKEN
environment variable or value in `.pronto.yml
to your Gitlab private token which you can find in your account settings.
Then just run it:
$ GITLAB_API_ENDPOINT="https://gitlab.com/api/v3" GITLAB_API_PRIVATE_TOKEN=token pronto run -f gitlab -c origin/master
You can run Pronto as a step of your CI builds and get the results as comments
on Bitbucket commits using BitbucketFormatter
or BitbucketPullRequestFormatter
.
Add Pronto runners you want to use to your Gemfile:
Set the BITBUCKET_USERNAME and BITBUCKET_PASSWORD environment variables or values in .pronto.yml
.
.
Then just run it:
$ BITBUCKET_USERNAME=user BITBUCKET_PASSWORD=pass pronto run -f bitbucket -c origin/master
or, if you want comments to appear on pull request diff, instead of commit:
$ BITBUCKET_USERNAME=user BITBUCKET_PASSWORD=pass pronto run -f bitbucket_pr -c origin/master
The behavior of Pronto can be controlled via the .pronto.yml
configuration
file. It must be placed in your project directory.
The file has the following format:
all:
exclude:
- 'spec/**/*'
github:
slug: mmozuras/pronto
access_token: B26354
api_endpoint: https://api.github.com/
web_endpoint: https://github.com/
gitlab:
slug: mmozuras/42
api_private_token: 46751
api_endpoint: https://api.vinted.com/gitlab
bitbucket:
slug: mmozuras/pronto
username: user
password: pass
web_endpoint: https://bitbucket.org/
max_warnings: 150
verbose: false
All properties that can be specified via .pronto.yml
, can also be specified
via environment variables. Their names will be the upcased path to the property.
For example: GITHUB_SLUG
or GITLAB_API_PRIVATE_TOKEN
. Environment variables
will always take precedence over values in configuration file.
Pronto can run various tools and libraries, as long as there's a runner for it. Currently available:
- pronto-brakeman
- pronto-coffeelint
- pronto-credo
- pronto-eslint (uses eslintrb)
- pronto-eslint_npm (uses eslint installed from npm)
- pronto-fasterer
- pronto-flay
- pronto-foodcritic
- pronto-haml
- pronto-jscs
- pronto-jshint
- pronto-json
- pronto-luacheck
- pronto-poper
- pronto-rails_best_practices
- pronto-rails_schema
- pronto-reek
- pronto-rubocop
- pronto-scss
- pronto-slim
- pronto-spell
- pronto-swiftlint
- pronto-tailor
Articles to help you to get started:
- Automating code review with Pronto (and friends)
- Setup Pronto with CircleCI
- Continuous Static Analysis using Pronto
- Pronto and git hooks
- How to end fruitless dev discussions about your project’s code style?
- Free automated code reviews using Pronto
- Automated Elixir code review with Github, Credo and Travis CI
Make a Pull Request to add something you wrote or found useful.
Pronto's changelog is available here.
Copyright (c) 2013-2016 Mindaugas Mozūras. See LICENSE for further details.