Danger HLint Gem Version

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 then 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 possibele 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

  1. Clone this repo
  2. Run bundle install to setup dependencies.
  3. Run bundle exec rake spec to run the tests.
  4. Use bundle exec guard to automatically have tests run as you make changes.
  5. Make your changes.

Attribution

Some methods and ideas are almost copied unchanged from Danger SwiftLint

License

danger-hlint is released under MIT License