A Danger plugin for HLint
Read a full how to at http://allocinit.io/haskell/danger-and-hlint/
Installation
Add this line to your Gemfile:
gem 'danger-hlint'
Usage
Methods and attributes from this plugin are available in
your Dangerfile
under the hlint
namespace.
At the moment one single method is exposed: hlint.lint
If you want the lint results to show in the diff instead of in the comments, you can use the inline_mode
option.
Violations that occur out of the diff will show in danger's fail or warn section. Here's a minimal example of what to add to your Dangerfile
(read the inline comments):
# get all affected files by the changes in the current diff
affected_files = git.added_files + git.modified_files
# limit files to .hs files
haskell_files = affected_files.select { |file| file.end_with?('.hs') }
# run hlint on the files and comment inline in the PR
hlint.lint haskell_files, inline_mode: true
To pass other parameters to the linter just add them to the method call. The
names and values of the parameters to the hlint.lint
method are handed over to linter.
For example, you can specify a hint file by calling
hlint.lint files hint: ".hlint.yaml"
To pass switches to the linter (like --quiet
) specify true
as the value in the call
hlint.lint files quiet: true
Warning
When running danger-hlint
on your CI server (especially CircleCI 2.0) make sure that the hlint
binary is in your PATH
, else this plugin will silently fail to produce any linting output. One possible way to do this (in CircleCI 2.0) is:
- run:
name: "Running HLint (via danger-hlint)"
command: |
export PATH="$HOME/.local/bin:$PATH"
bundle exec danger
Development
- Clone this repo
- Run
bundle install
to setup dependencies. - Run
bundle exec rake spec
to run the tests. - Use
bundle exec guard
to automatically have tests run as you make changes. - Make your changes.
Attribution
Some methods and ideas are almost copied unchanged from Danger SwiftLint
License
danger-hlint is released under MIT License