Erlang 代码格式化工具 erlfmt 使用教程

Erlang 代码格式化工具 erlfmt 使用教程

erlfmt An automated code formatter for Erlang erlfmt 项目地址: https://gitcode.com/gh_mirrors/er/erlfmt

1. 项目介绍

erlfmt 是一个针对 Erlang 语言的代码格式化工具,它通过自动化代码格式化过程,让开发团队可以专注于代码的功能实现,而不是外观。erlfmt 的目标是提供最少配置,以实现代码风格的一致性,同时尊重原始代码中的意图,通过上下文提示来生成美观的代码。

2. 项目快速启动

安装

erlfmt 需要 Erlang/OTP 21 或更高版本,并且支持所有平台。以下是如何使用 rebar3 插件快速启动 erlfmt 的步骤:

首先,确保你的项目中已经安装了 rebar3。然后在 rebar.config 文件中添加以下配置:

{project_plugins, [erlfmt]}.

使用

配置完成后,可以通过以下命令格式化项目中的所有 Erlang 文件:

$ rebar3 fmt

如果你希望在持续集成(CI)过程中检查代码格式,可以使用以下命令:

$ rebar3 fmt --check

escript 使用

如果你想在没有 rebar 的情况下使用 erlfmt,可以构建一个独立的 escript 文件:

$ rebar3 as release escriptize

构建完成后,可以使用以下命令运行 erlfmt:

$ _build/release/bin/erlfmt -w './otp/lib/*/{src,include}/*.{erl,hrl}'

3. 应用案例和最佳实践

代码风格

erlfmt 强制执行一致的代码风格,通过解析你的代码并重新打印,同时强制一个选定的最大行长度。例如,以下超过长度限制的代码行:

scenario(dial_phone_number(), ring(), hello(mike), hello(joe), hello(robert), system_working(), seems_to_be()).

将被自动重新格式化为垂直样式:

scenario(
  dial_phone_number(),
  ring(),
  hello(mike),
  hello(joe),
  hello(robert),
  system_working(),
  seems_to_be()
).

手动干预

在某些情况下,格式化规则可能会导致代码看起来不错,但不是完美。这时可能需要一些手动干预来帮助格式化器。例如,给定以下代码:

split_tokens(
  [{TokenType, Meta, TokenValue} | Rest],
  TokenAcc,
  CommentAcc
) ->
  split_tokens(
    Rest,
    [{TokenType, token_anno(erl_anno:to_term(Meta), #{}), TokenValue} | TokenAcc],
    CommentAcc
  ).

由于超过了行长度限制,格式化器将生成以下代码:

split_tokens(
  [{TokenType, Meta, TokenValue} | Rest],
  TokenAcc,
  CommentAcc
) ->
  split_tokens(
    Rest,
    [{TokenType, token_anno(erl_anno:to_term(Meta), #{}), TokenValue} | TokenAcc],
    CommentAcc
  ).

但可能更希望提取一个变量,并允许调用仍然在单行中渲染,例如:

split_tokens(
  [{TokenType, Meta, TokenValue} | Rest],
  TokenAcc,
  CommentAcc
) ->
  Token = {
    TokenType,
    token_anno(erl_anno:to_term(Meta), #{}),
    TokenValue
  },
  split_tokens(
    Rest,
    [Token | TokenAcc],
    CommentAcc
  ).

4. 典型生态项目

erlfmt 可以与多种 Erlang 生态项目配合使用,以下是一些典型的集成案例:

  • Visual Studio Code: 通过 Erlang Formatter 扩展支持 erlfmt。
  • doom emacs: 可以通过 rebar3_format 使用 erlfmt。

以上是 erlfmt 的基本使用教程,希望对您的 Erlang 项目开发有所帮助。

erlfmt An automated code formatter for Erlang erlfmt 项目地址: https://gitcode.com/gh_mirrors/er/erlfmt

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

施余牧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值