如何从 GHC/Cabal/Stack 获取错误和警告计数?

问题描述 投票:0回答:1

如果我在 PowerShell 中运行

dotnet build
来构建 .NET 项目,在输出末尾,我会看到一条消息,告诉我编译器在构建项目时生成了多少个警告和错误。我在下面附上了一个例子。

如何使用 GHC 获取错误计数?我正在使用 stack,它使用 cabal,而 cabal 又使用 GHC。任何级别的解决方案都可以。

我可以通过将

stack build
的标准错误传递到 vim 并使用 vim 中的一些搜索功能来获取警告或错误的计数。然而,我并不总是得到正确的结果。当我的源代码或源文件名包含“警告”或“错误”一词时,我的搜索结果包含误报。

我想要一种简单的方法来获取准确的错误和警告计数。也许,有一个命令行标志或一个简单的包装器可供我使用?我查看了 GHC 的手册页,发现没有错误和/或警告计数的标志。

我已经阅读了这个类似的 gcc 堆栈溢出帖子。这个问题的答案并不是很令人鼓舞,但我很好奇是否还有其他人可以分享一些见解,我希望 GHC 有一个不同的故事。

注意:我使用 bash 作为 shell,因此请将任何 shell 脚本调整为 bash。

bash haskell compiler-errors ghc haskell-stack
1个回答
2
投票

您可以使用

-ddump-json
标志生成 JSON 格式的输出,然后使用
jq
根据严重性进行过滤。最后,你有了用于计数的好旧的
wc -l
。这是获取错误数量的方法,例如:

ghc Main.hs -ddump-json | jq 'select(.severity == "SevError") .severity' | wc -l 
© www.soinside.com 2019 - 2024. All rights reserved.