2015-01-13 2 views
1

Я пытаюсь получить jenkins для запуска диализатора на коде erlang, но у меня проблема. Как мы вводим это в существующий проект существует целый ряд существующих ошибок, которые мы не хотим, чтобы флаг, который мы имеем в файле диализатора-игнорируемых предупрежденияигнорируя существующие ошибки диализатора с make и grep

У меня есть это в моем Makefile, но то, что я действительно хочу, это вернуть 0, если grep возвращает пустой документ и значение, если появляются новые ошибки. Но мой скрипт-фу просто не до этого

(DEPS_PLT): compile 
    @echo Building local plt at $(DEPS_PLT) 
    @echo 
    @(echo "Using Dialyzer in `which dialyzer`"; dialyzer --output_plt $(DEPS_PLT) --build_plt --apps $(DEPS)) 


dialyzer: compile $(DEPS_PLT) 
    @(echo "Using Dialyzer in `which dialyzer`"; dialyzer --fullpath --plt $(DEPS_PLT) -Wrace_conditions -r ./ebin)|\ 
    fgrep -v -f ./dialyzer-ignore-warnings 
+0

' grep' возвращает ноль, если какие-либо строки печатаются и ненулевое, если строки не распечатываются. Разве это не то, что вы хотите? –

ответ

2

Что-то вроде этого, возможно:

dialyzer: compile $(DEPS_PLT) 
    @echo "Using Dialyzer in `which dialyzer`" 
    @(dialyzer --fullpath --plt $(DEPS_PLT) -Wrace_conditions -r ./ebin)|\ 
    fgrep -v -f ./dialyzer-ignore-warnings; test "$$?" != 0 

То есть, убедитесь, что код выхода из fgrep является не нуля.

1

Вот аналогичное решение из хранилища rebar «s:

Makefile содержит:

dialyzer: dialyzer_warnings 
    @diff -U0 dialyzer_reference dialyzer_warnings 

dialyzer_warnings: 
    [email protected] -q -nn -n ebin -Wunmatched_returns -Werror_handling \ 
     -Wrace_conditions > dialyzer_warnings 

Reference file содержит:

rebar_eunit.erl:388: Call to missing or unexported function eunit_test:function_wrapper/2 
rebar_utils.erl:163: Call to missing or unexported function escript:foldl/3