Erlang 开发人员必备的 10 个 Erlang 工具
概括
在本教程中,我将介绍我作为 Erlang 开发人员在日常生活中最常使用的工具。所有或大多数主题都具有以下特点:
- 它们是专门为 Erlang 构建的(即没有文本编辑器、没有 git 等)。
- 它们不是针对某一特定类型的应用程序而定制的(即,您可以使用它们来开发任何类型的 Erlang 应用程序)。
在 Shell 中工作
与许多其他语言一样,与 Erlang VM 交互的最常见方式是通过 Erlang shell。您可以使用它来测试代码、学习如何使用 Erlang 以及调试生产系统。Erlang shell 功能强大,但您可以使用下面我将向您展示的三个工具为其添加更多功能。
1. 用户默认
通常,要在 Erlang 中评估模块外的函数,必须在其名称前加上相应的模块名称。例如,如果要对列表求和,则必须执行以下操作:
1> lists:sum([1, 2, 3]).
6
2>
但您会注意到,对于 shell 中的某些函数,您不需要显式定义。例如:
1> c(your_module).
{ok,your_module}
2> h().
1: c(your_module)
-> {ok,your_module}
ok
3> e(1).
{ok,your_module}
4>
这些函数在哪里?它们在shell_default模块中定义。您也可以添加自己的默认函数。为此,您必须创建并加载一个名为user_default 的模块。例如,我喜欢在使用 Erlang shell 时运行 bash 命令;我不想离开 shell 只是为了复制文件。Erlang/OTP 为您提供了一个函数来执行此操作:os:cmd/1,但它不会打印出命令的输出。相反,此命令将以字符串形式返回该输出。您必须打印字符串才能正确查看输出。
因此,使用user_default ,我在user_default.erl文件中添加了以下几行:
-module(user_default).
-export([cmd/1].
cmd(Cmd) -> io:format("~s~n", [os:cmd(Cmd)]).
现在我可以使用我的 shell运行、执行并打印os:cmd/1的结果:
1> c(user_default).
{ok, user_default}
2> cmd("cat user_default.erl").
-module(user_default).
-export([cmd/1].
cmd(Cmd) -> io:format("~s~n", [os:cmd(Cmd)]).
ok
3>
2. ~/.erlang
但是,我必须在打开的每个 shell 中手动加载user_default 。 ~/.erlang来帮忙!~/.erlang是一个几乎与 bash 的~/.bashrc一样工作的文件。启动时,shell 会读取~/.erlang并评估它在那里找到的每个表达式,就像它们是输入到 shell 中一样。
因此,我在该文件中添加了以下几行:
UD = "/path/to/my/user_default".
shell_default:c(UD).
我的~/.erlang实际上比这更复杂,但shell_default应该能让你了解我修改的要点。现在,我打开的每个 shell 都支持cmd/1。
3. erlang-history
Erlang shell 最令人讨厌的一点是它不能很好地跟踪命令历史记录。事实上,默认设置会在关闭 shell 时清除所有命令历史记录。我见过许多开发人员通过一个 Erlang 表达式笔记本来解决此限制,每次他们都会从中复制并粘贴到控制台中。(其中一些人使用user_default和/或~/.erlang来实现这一点。)
但这仍然不是一个真正的解决方案,对吧?为了正确修复该问题,在安装新版本的 Erlang/OTP 后,我立即安装了erlang-history。这是对 Erlang/OTP 发行版的一个非常小的几乎看不见的黑客攻击,其目的很简单:跟踪 Erlang shell 中以前的命令并让您重复使用它们。简单,但非常有用。
管理您的应用程序
一旦您超越简单的示例并进入 OTP 应用程序领域,您将更好地使用构建工具,它可以帮助您组织代码,管理依赖项,构建版本,运行测试等。
使用 Erlang 时,您既可以采用Makefile,也可以尝试尽可能远离它。
4. erlang.mk
如果使用 Makefile 来构建和管理你的项目对你来说很自然,你可能会喜欢erlang.mk。erlang.mk基本上是一个很大的 Makefile 脚本,你可以将其包含在你自己的 Makefile 中,如下所示:
PROJECT=your_app
include erlang.mk
通过它,你可以访问许多命令,例如
- $ make构建你的项目
- $ make tests运行你的测试套件
- $ make rel生成发布版本
您可以使用$ make help找到整个列表,当然,您可以通过扩展 Makefile 来添加更多内容。
erlang.mk还提供了插件基础架构,您可以在其中添加构建工具,例如hexer.mk或elvis.mk。
erlang.mk的最大优点是它为构建几乎所有现有的 Erlang 库提供了必要的支持,无论库所有者使用什么工具来维护它。使用erlang.mk,您可以将使用rebar、rebar3、erlang.mk(如预期的那样 :P)、临时Makefile和其他文件构建的应用程序包含在存储库中。您可以从github、hex.pm、bitbucket、本地文件系统和许多其他地方下载依赖项。显然, erlang.mk使 Erlang 变得更加通用。
5. rebar3
{deps, []}.
{erl_opts, [debug_info]}.
{cover_enabled, true}.
确保代码质量
我曾多次在网上(在采访和博客文章中)亲自提到过,保持高代码质量非常重要(尤其是如果你从事开源项目)。Erlang 附带了几个可以帮助你做到这一点的工具。Erlang 工具甚至可以帮助你检测在运行时可能发现的错误……而无需运行你的系统!
6. 透析器
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~