瀏覽代碼

Rework how dialyzer PLTs are built and used

This commit splits the PLTs into 2, one for all the required OTP
applications that are in the stdlib, and the other for the rebar
dependancies. Each one is created if it does not exist, then checked for
validity and then --add_to_plt is used to add any missing files (this is
very fast if nothing needs to be added). Then the application is
dialyzed using both PLTs.

The 'combo' PLT which resides in ~ is intended to be used by all of
Riak's deps, so it can grow to cover the set of OTP applications that
Riak depends on. Each project can only specify the ones it cares about.
pull/187/head
Andrew Thompson 11 年之前
父節點
當前提交
c41ec3ede0
共有 1 個文件被更改,包括 24 次插入19 次删除
  1. +24
    -19
      Makefile

+ 24
- 19
Makefile 查看文件

@ -24,30 +24,35 @@ test:
docs:
./rebar doc
APPS = kernel stdlib sasl erts ssl tools os_mon runtime_tools crypto inets \
xmerl webtool snmp public_key mnesia eunit
APPS = kernel stdlib erts sasl eunit syntax_tools compiler crypto
PLT ?= $(HOME)/.riak_combo_dialyzer_plt
check_plt: compile
dialyzer --check_plt --plt $(PLT) --apps $(APPS)
build_plt: compile
dialyzer --build_plt --output_plt $(PLT) --apps $(APPS)
dialyzer: compile
@echo
@echo Use "'make check_plt'" to check PLT prior to using this target.
@echo Use "'make build_plt'" to build PLT prior to using this target.
@echo
@sleep 1
dialyzer -Wunmatched_returns --plt $(PLT) ebin | \
fgrep -v -f ./dialyzer.ignore-warnings
LOCAL_PLT = .lager_combo_dialyzer_plt
${PLT}: compile
ifneq (,$(wildcard $(PLT)))
dialyzer --check_plt --plt $(PLT) --apps $(APPS) && \
dialyzer --add_to_plt --plt $(PLT) --output_plt $(PLT) --apps $(APPS) ; test $$? -ne 1
else
dialyzer --build_plt --output_plt $(PLT) --apps $(APPS); test $$? -ne 1
endif
${LOCAL_PLT}: compile
ifneq (,$(wildcard $(LOCAL_PLT)))
dialyzer --check_plt --plt $(LOCAL_PLT) deps/*/ebin && \
dialyzer --add_to_plt --plt $(LOCAL_PLT) --output_plt $(LOCAL_PLT) deps/*/ebin ; test $$? -ne 1
else
dialyzer --build_plt --output_plt $(LOCAL_PLT) deps/*/ebin ; test $$? -ne 1
endif
dialyzer: ${PLT} ${LOCAL_PLT}
dialyzer -Wunmatched_returns --plts $(PLT) $(LOCAL_PLT) -c ebin
cleanplt:
@echo
@echo "Are you sure? It takes about 1/2 hour to re-build."
@echo Deleting $(PLT) in 5 seconds.
@echo "Are you sure? It takes several minutes to re-build."
@echo Deleting $(PLT) and $(LOCAL_PLT) in 5 seconds.
@echo
sleep 5
rm $(PLT)
rm $(LOCAL_PLT)

Loading…
取消
儲存