From f5c8406353f1ec660e53250547e0670d15eda476 Mon Sep 17 00:00:00 2001 From: Badlop Date: Thu, 29 Feb 2024 16:46:05 +0100 Subject: [PATCH] Dialyzer: Add support to run Dialyzer with Mix --- Makefile.in | 13 ++++++++++--- mix.exs | 14 ++++++++++++++ mix.lock | 2 ++ 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/Makefile.in b/Makefile.in index def29dd46..7073e46d5 100644 --- a/Makefile.in +++ b/Makefile.in @@ -577,10 +577,16 @@ Makefile: Makefile.in #' dialyzer # -ifeq "$(REBAR_VER)" "3" +ifeq "$(REBAR_VER)" "6" # Mix +dialyzer: + MIX_ENV=test $(REBAR) dialyzer + +else +ifeq "$(REBAR_VER)" "3" # Rebar3 dialyzer: $(REBAR) dialyzer -else + +else # Rebar2 deps := $(wildcard $(DEPSDIR)/*/ebin) dialyzer/erlang.plt: @@ -620,6 +626,7 @@ dialyzer: erlang_plt deps_plt ejabberd_plt --get_warnings -o dialyzer/error.log ebin; \ status=$$? ; if [ $$status -ne 2 ]; then exit $$status; else exit 0; fi endif +endif #. #' test @@ -671,7 +678,7 @@ help: @echo " translations Extract translation files" @echo " TAGS Generate tags file for text editors" @echo "" - @echo " dialyzer Run Dialyzer static analyzer [rebar3]" + @echo " dialyzer Run Dialyzer static analyzer" @echo " hooks Run hooks validator" @echo " test Run Common Tests suite [rebar3]" @echo " xref Run cross reference analysis [rebar3]" diff --git a/mix.exs b/mix.exs index fcd30b093..d349dc370 100644 --- a/mix.exs +++ b/mix.exs @@ -16,6 +16,7 @@ defmodule Ejabberd.MixProject do aliases: [test: "test --no-start"], start_permanent: Mix.env() == :prod, language: :erlang, + dialyzer: dialyzer(), releases: releases(), package: package(), docs: docs(), @@ -52,6 +53,17 @@ defmodule Ejabberd.MixProject do ++ cond_included_apps()] end + defp dialyzer do + [ + plt_add_apps: [ + :mnesia, :odbc, :os_mon, :stdlib, + :eredis, :luerl, + :cache_tab, :eimp, :epam, :esip, :ezlib, :mqtree, + :p1_acme, :p1_mysql, :p1_oauth2, :p1_pgsql, :pkix, + :sqlite3, :stun, :xmpp], + ] + end + defp if_version_above(ver, okResult) do if :erlang.system_info(:otp_release) > ver do okResult @@ -104,6 +116,7 @@ defmodule Ejabberd.MixProject do defp deps do [{:base64url, "~> 1.0"}, {:cache_tab, "~> 1.0"}, + {:dialyxir, "~> 1.2", only: [:test], runtime: false}, {:eimp, "~> 1.0"}, {:ex_doc, "~> 0.31", only: [:dev, :edoc], runtime: false}, {:fast_tls, ">= 1.1.18"}, @@ -164,6 +177,7 @@ defmodule Ejabberd.MixProject do {config(:lua), :luerl}, {config(:redis), :eredis}, {Mix.env() == :edoc, :ex_doc}, + {Mix.env() == :test, :dialyxir}, {if_version_below(~c"22", true), :lager}, {config(:mysql), :p1_mysql}, {config(:sip), :esip}, diff --git a/mix.lock b/mix.lock index cde78ed67..d519bfd75 100644 --- a/mix.lock +++ b/mix.lock @@ -1,10 +1,12 @@ %{ "base64url": {:hex, :base64url, "1.0.1", "f8c7f2da04ca9a5d0f5f50258f055e1d699f0e8bf4cfdb30b750865368403cf6", [:rebar3], [], "hexpm", "f9b3add4731a02a9b0410398b475b33e7566a695365237a6bdee1bb447719f5c"}, "cache_tab": {:hex, :cache_tab, "1.0.30", "6d35eecfb65fbe5fc85988503a27338d32de01243f3fc8ea3ee7161af08725a4", [:rebar3], [{:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "6d8a5e00d8f84c42627706a6dbedb02e34d58495f3ed61935c8475ca0531cda0"}, + "dialyxir": {:hex, :dialyxir, "1.4.3", "edd0124f358f0b9e95bfe53a9fcf806d615d8f838e2202a9f430d59566b6b53b", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "bf2cfb75cd5c5006bec30141b131663299c661a864ec7fbbc72dfa557487a986"}, "earmark_parser": {:hex, :earmark_parser, "1.4.39", "424642f8335b05bb9eb611aa1564c148a8ee35c9c8a8bba6e129d51a3e3c6769", [:mix], [], "hexpm", "06553a88d1f1846da9ef066b87b57c6f605552cfbe40d20bd8d59cc6bde41944"}, "eimp": {:hex, :eimp, "1.0.22", "fa9b376ef0b50e8455db15c7c11dea4522c6902e04412288aab436d26335f6eb", [:rebar3], [{:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "b3b9ffb1d9a5f4a2ba88ac418a819164932d9a9d3a2fc3d32ca338ce855c4392"}, "epam": {:hex, :epam, "1.0.14", "aa0b85d27f4ef3a756ae995179df952a0721237e83c6b79d644347b75016681a", [:rebar3], [], "hexpm", "2f3449e72885a72a6c2a843f561add0fc2f70d7a21f61456930a547473d4d989"}, "eredis": {:hex, :eredis, "1.2.0", "0b8e9cfc2c00fa1374cd107ea63b49be08d933df2cf175e6a89b73dd9c380de4", [:rebar3], [], "hexpm", "d9b5abef2c2c8aba8f32aa018203e0b3dc8b1157773b254ab1d4c2002317f1e1"}, + "erlex": {:hex, :erlex, "0.2.6", "c7987d15e899c7a2f34f5420d2a2ea0d659682c06ac607572df55a43753aa12e", [:mix], [], "hexpm", "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"}, "esip": {:hex, :esip, "1.0.52", "a2840287c493a4280e6fba57a257706843b025c315875e38b03fd07190e22dba", [:rebar3], [{:fast_tls, "1.1.19", [hex: :fast_tls, repo: "hexpm", optional: false]}, {:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}, {:stun, "1.2.12", [hex: :stun, repo: "hexpm", optional: false]}], "hexpm", "6f00165395900500aa262ce0297162d93931c78c1464d89fd0edc6e3d6bc011f"}, "ex_doc": {:hex, :ex_doc, "0.31.1", "8a2355ac42b1cc7b2379da9e40243f2670143721dd50748bf6c3b1184dae2089", [:mix], [{:earmark_parser, "~> 1.4.39", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_c, ">= 0.1.1", [hex: :makeup_c, repo: "hexpm", optional: true]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "3178c3a407c557d8343479e1ff117a96fd31bafe52a039079593fb0524ef61b0"}, "ezlib": {:hex, :ezlib, "1.0.12", "ffe906ba10d03aaee7977e1e0e81d9ffc3bb8b47fb9cd8e2e453507a2e56221f", [:rebar3], [{:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "30e94355fb42260aab6e12582cb0c56bf233515e655c8aeaf48760e7561e4ebb"},