diff options
author | Loïc Hoguin <[email protected]> | 2018-12-04 17:32:07 +0100 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2018-12-04 17:32:07 +0100 |
commit | 3acdef8ed9063b07c777970b264cef67592f90ee (patch) | |
tree | 8e746cab3cdb90c28ea908c47466f67ff987c043 | |
parent | 671052aaa9e83ff959b5782387223f7439be41d4 (diff) | |
download | erlang.mk-3acdef8ed9063b07c777970b264cef67592f90ee.tar.gz erlang.mk-3acdef8ed9063b07c777970b264cef67592f90ee.tar.bz2 erlang.mk-3acdef8ed9063b07c777970b264cef67592f90ee.zip |
Fix and document Dialyzer against beam files
-rw-r--r-- | doc/src/guide/dialyzer.asciidoc | 13 | ||||
-rw-r--r-- | plugins/dialyzer.mk | 2 | ||||
-rw-r--r-- | test/plugin_dialyzer.mk | 10 |
3 files changed, 22 insertions, 3 deletions
diff --git a/doc/src/guide/dialyzer.asciidoc b/doc/src/guide/dialyzer.asciidoc index 58fe53f..6031113 100644 --- a/doc/src/guide/dialyzer.asciidoc +++ b/doc/src/guide/dialyzer.asciidoc @@ -71,3 +71,16 @@ it doesn't exist. This is normally not necessary as Dialyzer creates it automatically. The PLT file will be removed when you run `make distclean`. + +=== Dialyzing beam files + +By default Erlang.mk will run Dialyzer against the source +code. It is possible to configure Erlang.mk to use the +compiled source files instead. This is done using the +`DIALYZER_DIRS` variable: + +[source,make] +DIALYZER_DIRS = -r ebin + +This value must be set before including Erlang.mk to +function properly. diff --git a/plugins/dialyzer.mk b/plugins/dialyzer.mk index 4c2c81d..41e5871 100644 --- a/plugins/dialyzer.mk +++ b/plugins/dialyzer.mk @@ -54,7 +54,7 @@ distclean-plt: $(gen_verbose) rm -f $(DIALYZER_PLT) ifneq ($(wildcard $(DIALYZER_PLT)),) -dialyze: +dialyze: $(if $(filter --src,$(DIALYZER_DIRS)),,deps app) else dialyze: $(DIALYZER_PLT) endif diff --git a/test/plugin_dialyzer.mk b/test/plugin_dialyzer.mk index c0229eb..a487fae 100644 --- a/test/plugin_dialyzer.mk +++ b/test/plugin_dialyzer.mk @@ -6,7 +6,7 @@ ifneq ($(shell which sem 2>/dev/null),) DIALYZER_MUTEX = sem --fg --id dialyzer endif -.PHONY: dialyzer $(C_SRC_TARGETS) +.PHONY: dialyzer $(DIALYZER_TARGETS) dialyzer: $(DIALYZER_TARGETS) @@ -109,7 +109,7 @@ dialyzer-beam: build clean $t echo "ERLC_OPTS += +'{parse_transform, lager_transform}'" >> $(APP)/Makefile $i "Make Dialyzer use the beam files" - $t echo "DIALYZER_DIRS = -r ebin" >> $(APP)/Makefile + $t perl -ni.bak -e 'print;if ($$.==1) {print "DIALYZER_DIRS = -r ebin\n"}' $(APP)/Makefile $i "Create a module that calls lager" $t printf "%s\n" \ @@ -120,6 +120,12 @@ dialyzer-beam: build clean $i "Run Dialyzer" $t $(DIALYZER_MUTEX) $(MAKE) -C $(APP) dialyze $v + $i "Clean the application" + $t $(MAKE) -C $(APP) clean $v + + $i "Run Dialyzer again using the produced PLT file" + $t $(DIALYZER_MUTEX) $(MAKE) -C $(APP) dialyze $v + dialyzer-check: build clean $i "Bootstrap a new OTP application named $(APP)" |