Loading…

关于 Scala 格式化器 在线 Scala 代码格式化器

粘贴您的 Scala 代码,点击“格式化”,即刻获得整洁、一致的 scalafmt 风格输出。适用于后端服务、数据管道、函数式编程库和课堂示例。无需配置文件 – 直接提供经过优化的现代 Scala 格式化,便于审查和 git 提交。

为何使用我们的 Scala 格式化器

  • 即时格式化无结构或未对齐的 Scala 代码
  • 修复类型、参数和运算符周围的间距
  • 标准化类、对象、特质和方法的括号风格
  • 对长表达式和方法链应用 scalafmt 风格换行
  • 支持 `.scala`、`.sc` 脚本和 `.sbt` 构建文件
  • 代码通过安全后端格式化 – 不共享或索引
  • 响应式编辑器界面,适用于笔记本电脑、台式机和平板电脑

🛠️ 如何在线格式化Scala代码 for scala-formatter

1

1. 粘贴或加载您的Scala代码

📥 将Scala代码粘贴到编辑器中,或拖放`.scala`、`.sc`或`.sbt`文件。编辑器应用Scala语法高亮,方便快速浏览代码。

2

2. 点击“格式化”

⚙️ 点击**格式化**按钮。您的代码将通过HTTPS发送至scalafmt风格格式化器,重新组织空格、缩进和换行而不改变语义。

3

3. 查看结果

🔍 对比清理后的版本与原始代码。大括号、间距和空行已标准化,使代码结构更易理解。

4

4. 复制或下载

📤 将格式化后的Scala代码复制回IDE,或下载为`.scala`文件,准备提交、代码审查或部署。

技术规格

样式行为(Scalafmt风格)

格式化器旨在遵循常见scalafmt约定,使代码在现代Scala项目中更符合惯用风格。

方面行为备注
缩进与大括号为`class`、`object`、`trait`、`def`、`if`、`match`和`for`提供一致缩进使嵌套控制流和模式匹配更易阅读。
类型与参数间距标准化冒号、箭头和参数列表周围的空格例如:`def f(x: Int): String`而非`def f(x:Int):String`。
导入与包保持包和导入块结构化,并与定义分离提升文件间的导航性和一致性。
空行标准化顶级定义周围的空行分隔逻辑部分,如模型、服务和辅助工具。
幂等性多次运行格式化产生相同结果可随意重新格式化,不会出现样式漂移。

Scala 版本兼容性

该格式化器专为 Scala 2 和 Scala 3 语法设计。

功能支持情况备注
Scala 2.x✅ 是支持常见模式,如隐式转换、伴生对象和经典 for 推导式。
Scala 3 (Dotty)✅ 是理解 given/using、扩展方法、枚举及其他 Scala 3 结构。
SBT 构建文件✅ 是格式化构建和依赖定义中使用的 `.sbt` 文件。

支持的输入与限制

针对实际项目文件优化,不仅限于小段代码。

参数限制/行为备注
文件扩展名.scala, .sc, .sbt源文件、脚本和构建定义。
MIME 类型text/x-scala内部用于语法高亮。
最大输入大小≈ 2 MB 源代码极大型生成代码建议通过本地 scalafmt 格式化。
编码推荐 UTF-8非 UTF-8 内容应在格式化前转换。

执行与安全性

格式化通过私有、安全的后端执行,而非公开的第三方服务。

方面行为备注
传输通过 HTTPS 调用 Scala 格式化 API您的代码安全传输,不会公开暴露。
超时每个请求约25秒防止在异常输入上运行时间过长或卡住的格式化任务。
语义仅布局转换格式化程序只改变空白和布局,不会改变程序逻辑。

在本地工作流中使用 Scalafmt

要获得完全控制并进行仓库范围的格式化,请安装 scalafmt 并将其集成到构建或 CI 流水线中:

通用(通过 sbt)

将 scalafmt 添加到您的项目

addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2")

添加 sbt 插件,以便您可以从 sbt shell 运行 scalafmt。

格式化所有源文件

sbt scalafmtAll

使用 `.scalafmt.conf` 格式化项目中的所有 Scala 和 sbt 文件。

在 CI 中检查格式化

sbt scalafmtCheckAll

如果文件未正确格式化,则构建失败。

提交 `.scalafmt.conf` 文件,让您的团队、CI 和编辑器集成都遵循相同的 Scala 风格。

常见用例

后端与函数式编程服务

保持大型 Scala 后端和函数式编程代码库的一致性和易审查性。

  • 在 Akka、ZIO、Cats Effect 或 Play 项目中标准化风格。
  • 在打开拉取请求或分享示例前清理代码。
  • 在大规模重构或库迁移后统一格式。
object A{def main(args:Array[String]){println("hi")}}
object A {
  def main(args: Array[String]): Unit = {
    println("hi")
  }
}

Scala 学习与教学

专注于函数式概念和类型,而不是间距争议。

  • 在审查逻辑和模式前自动格式化学生提交的代码。
  • 在教授 Scala 风格时展示格式化前后的示例。
  • 为幻灯片、文档和博客文章准备干净的代码片段。

构建与工具脚本

保持 `.sbt` 构建文件和小型 Scala 脚本整洁。

  • 格式化 sbt 设置和依赖块以便于维护。
  • 清理用于迁移或内部工具的辅助脚本。

❓ Frequently Asked Questions

什么是 scalafmt,这个工具与它有什么关系?

Scalafmt 是 Scala 的标准代码格式化工具。此在线格式化器旨在遵循 scalafmt 风格的行为,因此您在此处看到的布局与在您自己的项目中运行 scalafmt 或 sbt-scalafmt 时得到的结果相近。

🔧我可以在这里自定义所有 scalafmt 规则吗?

此工具侧重于一个合理且具有明确导向的配置,而非暴露每一个 scalafmt 的调节选项。如需完全控制,请在您的项目中创建一个 `.scalafmt.conf` 文件,并通过 sbt 或您的 IDE 运行 scalafmt。

🌐它支持 Scala 3 语法吗?

是的。该格式化器设计用于处理现代 Scala 3 特性,如枚举、given/using、扩展方法等,同时也兼容经典的 Scala 2 代码。

🔒我的 Scala 代码会被发送到公共服务器吗?

您的代码通过 HTTPS 发送到一个专为此工具设立的私有格式化后端,不会被共享或索引。对于高度机密或专有代码,您可以选择在本地运行 scalafmt。

⚙️格式化会改变我的 Scala 程序的行为吗?

格式化器设计为仅更改空白和布局,不影响语义。尽管如此,如同任何大规模的格式化更改,建议在之后运行您的测试套件以确保无误。

Pro Tips

Best Practice

在您的代码仓库中保留一个 `.scalafmt.conf` 文件,以确保您的编辑器、CI 和 `sbt scalafmt` 都使用相同的风格。

Best Practice

在重构前进行一次专门的“仅格式化”提交,以便后续的差异对比聚焦于实际的代码更改,而非空白变动。

Best Practice

在团队中使用一致的最大行宽,以避免杂乱的差异和风格冲突。

Best Practice

在教学时,先展示杂乱的 Scala 代码,再展示格式化后的版本,以突出布局如何提升可读性。

Additional Resources

Other Tools