我怎样才能让 Shake 只打印一次错误?
How can I get Shake to print errors only once?
如果我在构建过程中遇到错误,我会看到两次
# ghc (for _build/lib/WCLoan.o)
# ghc (for _build/lib/WCLoan.o)
[2 of 2] Compiling WCLoan ( src/WCLoan.hs, _build/lib/WCLoan.o )
src/WCLoan.hs:18:1: error:
Parse error: module header, import declaration
or top-level declaration expected.
|
18 | imAnError
| ^^^^^^^^^
Error when running Shake build system:
* _build/lib/WCLoan.o
user error (Development.Shake.cmd, system command failed
Command: ghc -this-unit-id wcloan-0.0.1 src/WCLoan.hs -outputdir_build/lib -isrc:app:test -dynamic-too -O2 -j12 -fPIC -Werror -Wall -package-name wcloan-0.0.1 '-package base
-4.12.0.0' '-package calc-0.0.1' '-package vector-0.12.0.3'
Exit code: 1
Stderr:
src/WCLoan.hs:18:1: error:
Parse error: module header, import declaration
or top-level declaration expected.
|
18 | imAnError
| ^^^^^^^^^
)
我看到错误发生在构建过程中,然后也显示在
行下方
Error when running Shake build system:
有什么办法让它只显示一次吗?
错误消息来自两个不同的位置:
- 第一个是通过 Shake 运行并写入 stderr 的命令打印的,并带有一条错误消息。当您执行
cmd ...
时,Shake 默认为 EchoStderr True
(将 stderr 流打印到控制台),但您可以传递 EchoStderr False
以不回显 stderr。
- 第二个是 Haskell 冒出的异常,作为
ShakeException
,然后在最后打印出来,包括 stderr。当您执行 cmd ...
时,Shake 默认为 WithStderr True
以将 stderr 包含在异常中,您可以传递 WithStderr False
以不将 stderr 包含在异常中。
但是,由于 Shake 的工作方式,您可能会发现错误消息在完整的 Shake 命令结束之前很长一段时间就出现了。因此,如果您只想查看 stderr 一次,我建议保留 WithStderr
原样。
如果我在构建过程中遇到错误,我会看到两次
# ghc (for _build/lib/WCLoan.o)
# ghc (for _build/lib/WCLoan.o)
[2 of 2] Compiling WCLoan ( src/WCLoan.hs, _build/lib/WCLoan.o )
src/WCLoan.hs:18:1: error:
Parse error: module header, import declaration
or top-level declaration expected.
|
18 | imAnError
| ^^^^^^^^^
Error when running Shake build system:
* _build/lib/WCLoan.o
user error (Development.Shake.cmd, system command failed
Command: ghc -this-unit-id wcloan-0.0.1 src/WCLoan.hs -outputdir_build/lib -isrc:app:test -dynamic-too -O2 -j12 -fPIC -Werror -Wall -package-name wcloan-0.0.1 '-package base
-4.12.0.0' '-package calc-0.0.1' '-package vector-0.12.0.3'
Exit code: 1
Stderr:
src/WCLoan.hs:18:1: error:
Parse error: module header, import declaration
or top-level declaration expected.
|
18 | imAnError
| ^^^^^^^^^
)
我看到错误发生在构建过程中,然后也显示在
行下方Error when running Shake build system:
有什么办法让它只显示一次吗?
错误消息来自两个不同的位置:
- 第一个是通过 Shake 运行并写入 stderr 的命令打印的,并带有一条错误消息。当您执行
cmd ...
时,Shake 默认为EchoStderr True
(将 stderr 流打印到控制台),但您可以传递EchoStderr False
以不回显 stderr。 - 第二个是 Haskell 冒出的异常,作为
ShakeException
,然后在最后打印出来,包括 stderr。当您执行cmd ...
时,Shake 默认为WithStderr True
以将 stderr 包含在异常中,您可以传递WithStderr False
以不将 stderr 包含在异常中。
但是,由于 Shake 的工作方式,您可能会发现错误消息在完整的 Shake 命令结束之前很长一段时间就出现了。因此,如果您只想查看 stderr 一次,我建议保留 WithStderr
原样。