如何使Emacs字节编译警告错误

rne*_*way 5 testing emacs

在我的emacs包fsharp-mode的持续集成测试中,我在测试中添加了字节编译,以便立即得到反馈.我大致使用:

 emasc -batch batch-byte-compile *.el
Run Code Online (Sandbox Code Playgroud)

如果有错误,则返回非零值,但如果只是一个警告,则返回非零值.如果有任何警告,我也会收到警告,因为这可能包括调用未定义的函数(由于错字而发生过).

那么:如果编译警告,我如何获得非零返回码?

lun*_*orn 5

您可以设置byte-compile-error-on-warn为非零值,如下所示:

$ emacs -Q --batch \
    --eval '(setq byte-compile-error-on-warn t)' \
    -f batch-byte-compile *.el
Run Code Online (Sandbox Code Playgroud)

现在,字节编译器会在第一次警告时停止,因此您应该在此设置中选择此设置Makefile,并且仅在CI设置中使用它.

如果你需要比这更复杂的控制,你必须编写自己的后处理器,例如解析字节编译器输出的Python脚本,并相应地调整退出代码和/或输出,或者编写自己的batch-byte-compile变体来执行更多操作精密加工.