Face Control
Run static analysis of pull requests in Bitbucket Server (formerly Stash) and comment on problems in added lines.
Currently supports RuboCop and CoffeeLint and also checks for TODOs and FIXMEs.
Inspired by Hound.
Installation
gem install face_control
You also need to have CoffeeLint installed and available in PATH
.
Usage
face-control <project> <repository> <pull_request_id>
It's natural to run this on a continuous integration server (see “Example” below).
If you don't want to receive RuboCop comments with certain severity level,
pass the severity in the --skip-severity
option like so:
face-control --skip-severity convention <project> <repository> <pull_request_id>
Instead of --skip-severity
you can use just -S
.
You can also pass multiple severity levels as a comma-separated list:
face-control -S convention,refactor <project> <repository> <pull_request_id>
face-control
uses the same configuration file (~/.stashconfig.yml
)
as the official Bitbucket Server Command Line Tools
to connect to your Stash instance.
Example
Here's a Jenkins project setup as an example:
Source Code Management → Git → Repositories → Refspec:
+refs/pull-requests/*:refs/remotes/origin/pull-requests/*
It makes Jenkins fetch otherwise ignored Stash-created branches.
Source Code Management → Git → Branches to build → Branch Specifier:
origin/pull-requests/*/merge
Merge results of open non-conflicting pull requests.
Build → Execute shell → Command:
export PULL_REQUEST_ID=`echo $GIT_BRANCH | cut -d / -f 3`
gem install rubocop face_control
npm install -g coffeelint
face-control <project> <repository> $PULL_REQUEST_ID
Etymology
Face control in Wikipedia.