1

jenkins に erlang コードでダイアライザーを実行させようとしていますが、問題が発生しています。これを既存のプロジェクトに導入しているため、フラグを付けたくない既存のエラーがいくつかあります。これは、dialyzer-ignore-warningsファイルにあります。

私のメイクファイルにはこれがありますが、本当にやりたいことは、grep が空のドキュメントを返す場合は 0 を返し、新しいエラーがある場合は値を返すことです。しかし、私のスクリプトフーはそれまでではありません

(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
4

2 に答える 2

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がゼロでないことを確認してください。

于 2015-01-13T14:47:52.710 に答える
1

rebarのリポジトリからの同様のソリューションを次に示します。

Makefileには以下が含まれます。

dialyzer: dialyzer_warnings
    @diff -U0 dialyzer_reference dialyzer_warnings

dialyzer_warnings:
    -@dialyzer -q -nn -n ebin -Wunmatched_returns -Werror_handling \
        -Wrace_conditions > dialyzer_warnings

参照ファイルには次が含まれます。

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
于 2015-01-16T12:07:01.097 に答える