Effortless Code Conventions Review for Pull Request Changes
Reliably arranged source code helps hackability. You can filter code speedier if its organizing is predictable.
To fight with non-consistent source code formatting there are static analysis tools such as RuboCop .
We decided to share code formatting feedback directly on GitHub by commenting Pull Requests changes.
There is a suitable tool for this job - pronto . With help of *CI *(in our case that’s CircleCI ) we run it for each Pull Request.
Our CircleCI 2.0 configuration to run pronto #
**NOTE: **In order to reduce mess with dependencies we put all our linters and pronto into separate Gemfile.tools.
# .circleci/config.yml
version: 2
jobs:
lint:
environment:
- BUNDLE_GEMFILE: Gemfile.tools
docker:
# specify the version you desire here
- image: circleci/ruby:2.4.2-stretch-node-browsers
environment:
RAILS_ENV: test
RACK_ENV: test
working_directory: ~/repo
steps:
- checkout
- restore_cache:
keys:
- v1-tools-dependencies-{{ checksum "Gemfile.tools.lock" }}
# fallback to using the latest cache if no exact match is found
- v1-tools-dependencies-
- run:
name: install cmake
command: |
sudo apt-get install cmake
- run:
name: install dependencies
command: |
bundle check --path vendor/bundle || bundle install --jobs=4 --retry=3 --path vendor/bundle
- save_cache:
paths:
- ./vendor/bundle
key: v1-tools-dependencies-{{ checksum "Gemfile.tools.lock" }}
- run:
name: run source code analysis
command: |
bundle exec pronto run -c origin/master -f github_status -f github_pr_review --exit-code
- store_artifacts:
path: ./tmp
workflows:
version: 2
release:
jobs:
- lint:
# Run lint after tests
# requires:
# - test
source 'https://rubygems.org'
git_source(:github) do |repo_name|
repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
"https://github.com/#{repo_name}.git"
end
gem 'pronto'
gem 'oj'
gem 'pronto-rubocop', require: false
gem 'pronto-scss', require: false
gem 'pronto-eslint', require: false
gem 'pronto-brakeman', require: false
gem 'pronto-rails_best_practices', require: false
Finally, you need to add PRONTO_GITHUB_ACCESS_TOKEN. You could obtain your PERSONAL GITHUB ACCESS TOKEN by following this instruction and check environment variable on CircleCI to add it to the project.
Summary #
There are similar ready SASS solutions to help you with reducing the amount of waste:
But they are not free and most of them are solve only specific problems.
With pronto, you have more options to customize by:
setup specific code analyzers for the different problems
easier support rules to follow company conventions
store rules in the repository with project source code
Let’s remove the waste of time for trivial problems and spend it on codding!
Get More #
Contact us to find out more about how we work. We’re excited to help you — as always, we’d love to hear what you think!
Paul Keen is an Open Source Contributor and a Chief Technology Officer at JetThoughts . Follow him on LinkedIn or GitHub .
If you enjoyed this story, we recommend reading our latest tech stories and trending tech stories .