Blog Posts

Erlang 开发者必备的 10 个工具

## 概述 在本教程中,我将介绍作为 Erlang 开发人员在日常生活中使用最多的工具。入选的所有或大部分工具都具有以下特征: - 它们是专门为 Erlang 构建的(即没有文本编辑器,没有 git 等)。 - 它们不是为特定类型的应用程序量身定制的(即您可以使用它们来开发任何类型的 Erlang 应用程序)。 ## 在Shell中工作 与许多其他

Read More

Erlang 和代码风格

## 对防御性编程风格的思考 正确的 Erlang 用法要求您不要编写任何类型的防御性代码。这称为意图编程(intentional programming)。您为预期代码采用的意图控制流路径编写代码。而且您不会为您认为不可能的路径编写任何代码。此外,您不会为数据流编写代码,这不是程序的意图。 ## 这是一个愚蠢的效果 如果 Erlang 程序出错,它就

Read More

Erlang的万圣节👻( Dialyzer 无法找到的dead code)

像我这样谈论 Dialyzer 这样出色的工具的缺点或局限性不太寻常。 尽管如此,今天我还是发现了一些非常死板的代码块,它们通过了Dialyzer的类型分析。 所以,既然万圣节快到了,让我们从它的坟墓里拿出一些死代码吧! ## Dialyzer 产生警告的时候 在以前我见过这样的代码…… <Code language="erlang"> {`warn

Read More

Erlang LS指南(五)

## 如何进行诊断 几天前,NextRoll 发布了 rebar3_hank,这是一个“强大而简单的工具,可以检测 Erlang 代码库周围的死代码”。在他们的原始帖子中,作者提到了 rebar3_hank 和 Erlang LS 提供的一些功能之间的重叠,例如检测未使用的包含文件。 对这个新工具很感兴趣,我决定深入研究它,检查 rebar3_hank

Read More

Erlang LS指南(四)

## 启动调试会话 ### VS Code 选择 Run and Debug 面板,从下拉列表中选择 Existing Erlang Node 并按下播放按钮: ![001](/images/blog/0010_001.png) 打开一个新终端并使用 curl 命令触发我们的新断点。 <Code language="shell"> {`curl -i

Read More

Erlang LS指南(三)

## 工作区符号 立即跳转到您正在寻找的模块。 ![001](/images/blog/0009_001.png) ## 折叠(folding) 专注于重要的事情,放弃其余的。 ![002](/images/blog/0009_002.png) ## 代码片段 快速插入参数化、可重用的代码片段。 ![003](/images/blog/000

Read More