summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile17
-rw-r--r--src/rabbit_dialyzer.erl92
2 files changed, 6 insertions, 103 deletions
diff --git a/Makefile b/Makefile
index 32de335fbd..18f00889e1 100644
--- a/Makefile
+++ b/Makefile
@@ -111,27 +111,22 @@ $(SOURCE_DIR)/rabbit_framing_amqp_0_8.erl: codegen.py $(AMQP_CODEGEN_DIR)/amqp_c
$(PYTHON) codegen.py body $(AMQP_SPEC_JSON_FILES_0_8) $@
dialyze: $(BEAM_TARGETS) $(BASIC_PLT)
- $(ERL_EBIN) -eval \
- "rabbit_dialyzer:dialyze_files(\"$(BASIC_PLT)\", \"$(BEAM_TARGETS)\")." \
- -eval \
- "init:stop()."
-
-
+ dialyzer --plt $(BASIC_PLT) --no_native \
+ -Wrace_conditions -Wbehaviours $(BEAM_TARGETS)
# rabbit.plt is used by rabbitmq-erlang-client's dialyze make target
create-plt: $(RABBIT_PLT)
$(RABBIT_PLT): $(BEAM_TARGETS) $(BASIC_PLT)
- cp $(BASIC_PLT) $@
- $(ERL_EBIN) -eval \
- "rabbit_dialyzer:halt_with_code(rabbit_dialyzer:add_to_plt(\"$@\", \"$(BEAM_TARGETS)\"))."
+ dialyzer --plt $(BASIC_PLT) --output_plt $@ --no_native \
+ --add_to_plt $(BEAM_TARGETS)
$(BASIC_PLT): $(BEAM_TARGETS)
if [ -f $@ ]; then \
touch $@; \
else \
- $(ERL_EBIN) -eval \
- "rabbit_dialyzer:halt_with_code(rabbit_dialyzer:create_basic_plt(\"$@\"))."; \
+ dialyzer --output_plt $@ --build_plt \
+ --apps kernel stdlib sasl mnesia os_mon ssl eunit tools; \
fi
clean:
diff --git a/src/rabbit_dialyzer.erl b/src/rabbit_dialyzer.erl
deleted file mode 100644
index a9806305ef..0000000000
--- a/src/rabbit_dialyzer.erl
+++ /dev/null
@@ -1,92 +0,0 @@
-%% The contents of this file are subject to the Mozilla Public License
-%% Version 1.1 (the "License"); you may not use this file except in
-%% compliance with the License. You may obtain a copy of the License at
-%% http://www.mozilla.org/MPL/
-%%
-%% Software distributed under the License is distributed on an "AS IS"
-%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
-%% License for the specific language governing rights and limitations
-%% under the License.
-%%
-%% The Original Code is RabbitMQ.
-%%
-%% The Initial Developers of the Original Code are LShift Ltd,
-%% Cohesive Financial Technologies LLC, and Rabbit Technologies Ltd.
-%%
-%% Portions created before 22-Nov-2008 00:00:00 GMT by LShift Ltd,
-%% Cohesive Financial Technologies LLC, or Rabbit Technologies Ltd
-%% are Copyright (C) 2007-2008 LShift Ltd, Cohesive Financial
-%% Technologies LLC, and Rabbit Technologies Ltd.
-%%
-%% Portions created by LShift Ltd are Copyright (C) 2007-2010 LShift
-%% Ltd. Portions created by Cohesive Financial Technologies LLC are
-%% Copyright (C) 2007-2010 Cohesive Financial Technologies
-%% LLC. Portions created by Rabbit Technologies Ltd are Copyright
-%% (C) 2007-2010 Rabbit Technologies Ltd.
-%%
-%% All Rights Reserved.
-%%
-%% Contributor(s): ______________________________________.
-%%
-
--module(rabbit_dialyzer).
-
--export([create_basic_plt/1, add_to_plt/2, dialyze_files/2,
- halt_with_code/1]).
-
-%%----------------------------------------------------------------------------
-
--ifdef(use_specs).
-
--spec(create_basic_plt/1 :: (file:filename()) -> 'ok').
--spec(add_to_plt/2 :: (file:filename(), string()) -> 'ok').
--spec(dialyze_files/2 :: (file:filename(), string()) -> 'ok').
--spec(halt_with_code/1 :: (atom()) -> no_return()).
-
--endif.
-
-%%----------------------------------------------------------------------------
-
-create_basic_plt(BasicPltPath) ->
- OptsRecord = dialyzer_options:build(
- [{analysis_type, plt_build},
- {output_plt, BasicPltPath},
- {files_rec, otp_apps_dependencies_paths()}]),
- dialyzer_cl:start(OptsRecord),
- ok.
-
-add_to_plt(PltPath, FilesString) ->
- Files = string:tokens(FilesString, " "),
- DialyzerWarnings = dialyzer:run([{analysis_type, plt_add},
- {init_plt, PltPath},
- {output_plt, PltPath},
- {files, Files}]),
- print_warnings(DialyzerWarnings, fun dialyzer:format_warning/1),
- ok.
-
-dialyze_files(PltPath, ModifiedFiles) ->
- Files = string:tokens(ModifiedFiles, " "),
- DialyzerWarnings = dialyzer:run([{init_plt, PltPath},
- {files, Files},
- {warnings, [behaviours,
- race_conditions]}]),
- case DialyzerWarnings of
- [] -> io:format("~nOk~n");
- _ -> io:format("~n~nFAILED with the following ~p warnings:~n~n",
- [length(DialyzerWarnings)]),
- print_warnings(DialyzerWarnings, fun dialyzer:format_warning/1)
- end,
- ok.
-
-print_warnings(Warnings, FormatFun) ->
- [io:format("~s~n", [FormatFun(W)]) || W <- Warnings],
- io:format("~n").
-
-otp_apps_dependencies_paths() ->
- [code:lib_dir(App, ebin) ||
- App <- [kernel, stdlib, sasl, mnesia, os_mon, ssl, eunit, tools]].
-
-halt_with_code(ok) ->
- halt();
-halt_with_code(fail) ->
- halt(1).