2014-09-08 12 views
5

Podczas mojego ciągłego testowania integracyjnego dla mojego pakietu emacs fsharp-mode, do testu dodałem kompilację bajtów, aby uzyskać natychmiastową informację zwrotną. Z grubsza używam:W jaki sposób uczynić błędy kompilacji bajtów Emacs

emasc -batch batch-byte-compile *.el 

Zwraca wartość niezerową, jeśli wystąpił błąd, ale nie, jeśli jest to tylko ostrzeżenie. Chciałbym być również ostrzeżony, jeśli pojawią się jakieś ostrzeżenia, ponieważ może to obejmować wywoływanie niezdefiniowanych funkcji (co zdarzyło się wcześniej z powodu literówki).

Więc: w jaki sposób mogę uzyskać niezerowy kod powrotu w przypadku ostrzeżeń kompilacji?

+4

Czy próbowałeś 'bajt-compile-error-on-warn'? – Lindydancer

+0

Mam teraz, dzięki. Wydaje się oczywiste, ale nie mogłem go znaleźć w instrukcji. – rneatherway

Odpowiedz

5

Można ustawić byte-compile-error-on-warn do wartości non-nil, jak w:

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

Kompilator bajt teraz zatrzymuje się na pierwszym ostrzeżeniem, choć, więc należy uczynić to ustawienie opcjonalne w swojej Makefile, a tylko użyj go w konfiguracji CI.

Jeśli potrzebujesz bardziej wyrafinowanej kontroli, musisz napisać własny postprocesor, np. skrypt w języku Python, który analizuje dane wyjściowe kompilatora bajtów i odpowiednio dostosowuje kod wyjścia i/lub wyjście, lub zapisuje własny wariant batch-byte-compile, który wykonuje bardziej zaawansowane przetwarzanie.

+0

Wielkie dzięki. Wydaje się oczywiste, ale nie mogłem go znaleźć w instrukcji. – rneatherway

Powiązane problemy