THRIFT-5635 Update erlang client for Erlang 23-25
Client: erl
Patch: Sergey Yelin

This closes #2677

Summary of changes:
 - Add useful compiler options
 - Format sources using erlfmt
 - Switch to modern callbacks in thrift_* modules
 - Add static analysis (dialyzer), disabled by default
 - Add/fix types for API calls

NOTE: Enabling static analysis requires additional tweaks in multiplexer module.
diff --git a/lib/erl/src/thrift.app.src b/lib/erl/src/thrift.app.src
index 32e1721..0e25b67 100644
--- a/lib/erl/src/thrift.app.src
+++ b/lib/erl/src/thrift.app.src
@@ -18,57 +18,34 @@
 %%
 %%% -*- mode:erlang -*-
 {application, thrift, [
-  % A quick description of the application.
-  {description, "Thrift bindings"},
+    % A quick description of the application.
+    {description, "Thrift bindings"},
 
   % The version of the applicaton
   {vsn, "0.20.0"},
 
-  % All modules used by the application.
-  {modules, [
-    thrift_base64_transport,
-    thrift_binary_protocol,
-    thrift_buffered_transport,
-    thrift_client_util,
-    thrift_client,
-    thrift_disk_log_transport,
-    thrift_file_transport,
-    thrift_framed_transport,
-    thrift_http_transport,
-    thrift_json_parser,
-    thrift_json_protocol,
-    thrift_membuffer_transport,
-    thrift_memory_buffer,
-    thrift_processor,
-    thrift_protocol,
-    thrift_reconnecting_client,
-    thrift_server,
-    thrift_service,
-    thrift_socket_server,
-    thrift_socket_transport,
-    thrift_transport_state_test,
-    thrift_transport
-  ]},
+    % All modules used by the application.
+    {modules, []},
 
-  % All of the registered names the application uses. This can be ignored.
-  {registered, []},
+    % All of the registered names the application uses. This can be ignored.
+    {registered, []},
 
-  % Applications that are to be started prior to this one. This can be ignored
-  % leave it alone unless you understand it well and let the .rel files in
-  % your release handle this.
-  {applications, [kernel, stdlib]},
+    % Applications that are to be started prior to this one. This can be ignored
+    % leave it alone unless you understand it well and let the .rel files in
+    % your release handle this.
+    {applications, [kernel, stdlib]},
 
-  % OTP application loader will load, but not start, included apps. Again
-  % this can be ignored as well.  To load but not start an application it
-  % is easier to include it in the .rel file followed by the atom 'none'
-  {included_applications, []},
+    % OTP application loader will load, but not start, included apps. Again
+    % this can be ignored as well.  To load but not start an application it
+    % is easier to include it in the .rel file followed by the atom 'none'
+    {included_applications, []},
 
-  % configuration parameters similar to those in the config file specified
-  % on the command line. can be fetched with gas:get_env
-  {env, [
-    % If an error/crash occurs during processing of a function,
-    % should the TApplicationException serialized back to the client
-    % include the erlang backtrace?
-    {exceptions_include_traces, true}
-  ]}
+    % configuration parameters similar to those in the config file specified
+    % on the command line. can be fetched with gas:get_env
+    {env, [
+        % If an error/crash occurs during processing of a function,
+        % should the TApplicationException serialized back to the client
+        % include the erlang backtrace?
+        {exceptions_include_traces, true}
+    ]}
 ]}.