为何使用我们的 Scala 格式化器
- 即时格式化无结构或未对齐的 Scala 代码
- 修复类型、参数和运算符周围的间距
- 标准化类、对象、特质和方法的括号风格
- 对长表达式和方法链应用 scalafmt 风格换行
- 支持 `.scala`、`.sc` 脚本和 `.sbt` 构建文件
- 代码通过安全后端格式化 – 不共享或索引
- 响应式编辑器界面,适用于笔记本电脑、台式机和平板电脑
🛠️ 如何在线格式化Scala代码 for scala-formatter
1. 粘贴或加载您的Scala代码
📥 将Scala代码粘贴到编辑器中,或拖放`.scala`、`.sc`或`.sbt`文件。编辑器应用Scala语法高亮,方便快速浏览代码。
2. 点击“格式化”
⚙️ 点击**格式化**按钮。您的代码将通过HTTPS发送至scalafmt风格格式化器,重新组织空格、缩进和换行而不改变语义。
3. 查看结果
🔍 对比清理后的版本与原始代码。大括号、间距和空行已标准化,使代码结构更易理解。
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如果文件未正确格式化,则构建失败。
常见用例
后端与函数式编程服务
保持大型 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 3 语法吗?
🔒我的 Scala 代码会被发送到公共服务器吗?
HTTPS 发送到一个专为此工具设立的私有格式化后端,不会被共享或索引。对于高度机密或专有代码,您可以选择在本地运行 scalafmt。⚙️格式化会改变我的 Scala 程序的行为吗?
Pro Tips
在您的代码仓库中保留一个 `.scalafmt.conf` 文件,以确保您的编辑器、CI 和 `sbt scalafmt` 都使用相同的风格。
在重构前进行一次专门的“仅格式化”提交,以便后续的差异对比聚焦于实际的代码更改,而非空白变动。
在团队中使用一致的最大行宽,以避免杂乱的差异和风格冲突。
在教学时,先展示杂乱的 Scala 代码,再展示格式化后的版本,以突出布局如何提升可读性。
Additional Resources
Other Tools
- CSS 美化器
- HTML 美化器
- JavaScript 美化器
- PHP 美化器
- 颜色选择器
- 精灵图提取器
- Base64 解码器
- Base64 编码器
- C# 格式化器
- CSV 格式化器
- Dockerfile Formatter
- Elm 格式化器
- ENV 格式化器
- Go 格式化器
- GraphQL 格式化器
- HCL 格式化器
- INI 格式化器
- JSON 格式化器
- LaTeX 格式化器
- Markdown 格式化器
- Objective-C 格式化器
- Php Formatter
- Proto 格式化器
- Python 格式化器
- Ruby 格式化器
- Rust 格式化器
- Shell 脚本格式化器
- SQL 格式化器
- SVG 格式化工具
- Swift 格式化工具
- TOML 格式化工具
- Typescript Formatter
- XML 格式化工具
- YAML 格式化工具
- Yarn 格式化工具
- CSS 压缩器
- Html Minifier
- Javascript Minifier
- JSON 压缩器
- XML 压缩器
- HTTP 头部查看器
- PDF 转文本
- 正则表达式测试器
- 搜索引擎排名检查器
- Whois 查询