在 windows 上安装 hlint 的问题

Issue installing hlint on windows

我正在尝试使用 Windows 在 Windows 上安装 hlint,我收到以下错误:

   Preprocessing executable 'hlint' for hlint-1.8.50..
Building executable 'hlint' for hlint-1.8.50..

<no location info>: warning: [-Wmissing-home-modules]
    These modules are needed for compilation but not listed in your .cabal file's other-modules:
        Apply
        CmdLine
        HLint
        HSE.All
        HSE.Bracket
        HSE.Evaluate
        HSE.Match
        HSE.NameMatch
        HSE.Type
        HSE.Util
        Hint.All
        Hint.Bracket
        Hint.Duplicate
        Hint.Extensions
        Hint.Import
        Hint.Lambda
        Hint.List
        Hint.ListRec
        Hint.Match
        Hint.Monad
        Hint.Naming
        Hint.Pragma
        Hint.Structure
        Hint.Type
        Hint.Util
        Idea
        Language.Haskell.HLint
        Parallel
        Proof
        Report
        Settings
        Test
        Util
[ 1 of 35] Compiling HSE.Type         ( src\HSE\Type.hs, dist\build\hlint\hlint-tmp\HSE\Type.o )

src\HSE\Type.hs:6:1: error:
    Could not find module `Language.Haskell.Exts.Annotated'
    Perhaps you meant
      Language.Haskell.Exts.Syntax (from haskell-src-exts-1.23.1)
      Language.Haskell.Exts.Pretty (from haskell-src-exts-1.23.1)
      Language.Haskell.Exts.Build (from haskell-src-exts-1.23.1)
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
  |
6 | import Language.Haskell.Exts.Annotated as Export hiding (parse, loc, parseFile, paren, Assoc(..))
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
cabal.exe: Failed to build hlint-1.8.50. See the build log above for details.

Glorious Glasgow Haskell 编译系统,版本 9.2.1,hlint-1.8.50

根据 Neil Mitchell 的评论“HLint 的任何发布版本都不能与 GHC 9.2.1 一起使用(因为它的某些依赖项尚未准备好)”运行 HLint 是不可能的使用 GHC 9.2.1,默认情况下与 Chocolatey 和 Haskell Platform for Windows.

一起安装

不过,我找到了解决方法。我为 Windows:

安装了 GHCup
Set-ExecutionPolicy Bypass -Scope Process -Force;[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072;Invoke-Command -ScriptBlock ([ScriptBlock]::Create((Invoke-WebRequest https://www.haskell.org/ghcup/sh/bootstrap-haskell.ps1 -UseBasicParsing))) -ArgumentList $true

GHCup 随 cabal 和 ghc 8.10.7 安装,与 HLint 完美兼容。 为了安装 HLint 我 运行:

cabal update
cabal install hlint

之后将新创建的 hlint 二进制文件的位置添加到 PATH。瞧:一切都很顺利!