Есть ли способ сказать GHC, чтобы сбросить все предупреждения в файл? - PullRequest
3 голосов
/ 09 мая 2019

Я до сих пор пробовал следующее:

me@pc:~/code$ ghc file.hs -Wall | tee warnings.log
me@pc:~/code$ ghc file.hs -Wall > warnings.log

Но ghc просто печатает предупреждения как обычно и передает только шаги без предупреждения.

Есть лиспособ сделать это?

1 Ответ

7 голосов
/ 09 мая 2019

Причина, по которой все еще отображаются эти предупреждения, заключается в том, что предупреждения и ошибки выводятся на стандартном канале error (stderr).

Таким образом, вы можете перенаправить ошибки в файл, перенаправив stderr с помощью:

ghc file.hs -Wall <b>2></b> warnings.log

Обратите внимание на 2 в <b>2</b>>. Как уже было сказано, на этот канал выводятся как предупреждения , так и исключения .

Мы можем перенаправить поток ошибок на tee в bash с помощью:

ghc -Wall file.hs <b>2> >(tee warnings.log)</b>

эта функция работает для bash, но, насколько я знаю, это не определено в стандарте POSIX. Для bash это работает, но для sh это похоже на ошибку.

...