将hlint参数传递给ghc-mod的正确方法?

时间:2017-02-13 04:39:29

标签: haskell ghc-mod hlint

我正在尝试用ghc-mod lint一个文件。我知道ghc-mod使用hlint,我知道hlint接受参数来修改它报告的建议。例如,这很好用:

eric@linux-epth:total-beginner-haskell$ hlint src/Borrower.hs --hint=Generalise
src/Borrower.hs:44:3: Suggestion: Use mappend
Found:
getName br ++
" (" `mappend` show (getMaxBooks br) `mappend` " books)"
Why not:
getName br `Data.Monoid.mappend`
(" (" `mappend` show (getMaxBooks br) `mappend` " books)")

1 hint

这是ghc-mod将参数传递给hlint所需的格式:

Usage: ghc-mod lint [-h|--hlintOpt ARG] FILE

但是下面没有任何变化产生上面显示的提示:

eric@linux-epth:total-beginner-haskell$ ghc-mod lint -h hint=Generalise src/Borrower.hs
eric@linux-epth:total-beginner-haskell$ ghc-mod lint --hlintOpt hint=Generalise src/Borrower.hs
eric@linux-epth:total-beginner-haskell$ ghc-mod lint --hlintOpt "--hint=Generalise" src/Borrower.hs
eric@linux-epth:total-beginner-haskell$ ghc-mod lint --hlintOpt '--hint=Generalise' src/Borrower.hs

使用ghc-mod将参数传递给hlint的正确格式是什么?

谢谢。

1 个答案:

答案 0 :(得分:1)

似乎这是ghc-mod的错误:

问题:https://github.com/DanielG/ghc-mod/issues/826

它已经修复并合并为master,但尚未发布。

由于问题的里程碑为v5.8.0.0,因此可能会在该版本中修复。

我从Github的最新ghc-mod分支构建了master,并确认以下命令有效:

$ ghc-mod lint src/Borrower.hs  --hlintOpt='--hint=Generalise.hs'
src/Borrower.hs:1:8: Suggestion: Use mappendFound:  getName br ++    " (" `mappend` show (getMaxBooks br) `mappend` " books)"Why not:  getName br `Data.Monoid.mappend`    (" (" `mappend` show (getMaxBooks br) `mappend` " books)"

这是我从Github构建最新ghc-mod时执行的步骤。

$ git clone https://github.com/DanielG/ghc-mod
$ cd ghc-mod
$ stack init --ignore-subdirs --solver
$ stack build