This is a revival of the splint
project
to create an hlint
plugin for GHC.
The main advantages of doing this are:
-
Better integration with GHC tooling
Now
hlint
errors will appear directly in your tools (e.g.cabal build
ghcid
,haskell-language-server
) instead of you having to runhlint
out of band. -
You only have to lint modules that you rebuild
-
You don't have to parse the module twice
In order to build this plugin, you will need to:
- build the
hlint
package with the-f-ghc-lib
cabal configure option - build the
ghc-lib-parser-ex
package with the-fno-ghc-lib
cabal configure option
To use this plugin, add this package as a build dependency and then enable the
following GHC options (typically in the ghc-options:
field of your .cabal
file):
-fplugin HLint.Plugin
You can pass command-line options to hlint
using -fplugin-opt
, like this:
-fplugin HLint.Plugin -fplugin-opt='HLint.Plugin:--ignore=Redundant guard'
This repository uses Nix for development. You can build this package entirely
using Nix for a specific version of ghc
by running:
$ nix develop .#ghc${MAJOR}${MINOR}
… replacing ${MAJOR}
and ${MINOR}
with the major and minor version of the
ghc
that you're using. For example, if you're using GHC 9.4, then you'd run:
$ nix build .#ghc94
If you want to develop interactively using Cabal inside of a Nix shell, run:
$ nix develop .#ghc${MAJOR}${MINOR}
Once you are inside that Nix shell, then you can use cabal
commands, like
cabal build
or cabal repl
. You can also use ghcid
or launch your favorite
IDE from inside this shell.
To check that this plugin works for all supported GHC versions, run:
$ nix flake check