>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML
Swift

SwiftFormat:Swift 代码的自动造型师

8,841 星标

SwiftFormat logo

当代码自动格式化自身时

想象一下:在一个五人开发团队中,每个人都按自己的方式写代码。有的在括号前加空格,有的不加;有的喜欢将函数参数分行书写,有的则全部写在同一行。结果就是代码库风格参差不齐,代码审查变成了无休止的代码风格争论。

SwiftFormat 正是为解决这一问题而生——一款用于自动格式化 Swift 代码的工具。它不仅仅添加空格和缩进,而是将代码统一到同一标准,修复数百种细微的不一致问题。

SwiftFormat 能做什么?

  1. 深度样式处理

    • 修正缩进和对齐
    • 移除冗余的 self 和括号
    • 修复访问修饰符顺序
    • 统一闭包声明风格
  2. 灵活的配置选项

    • 超过 50 条格式化规则
    • 支持配置文件 .swiftformat
    • 能够创建自定义规则
  3. 任意场景集成

    • 命令行手动执行
    • Xcode、VSCode、Sublime Text 插件
    • Git pre-commit 钩子
    • 通过 GitHub Actions 支持 CI/CD
// До форматирования
func processData(data:[String:Any], completion:(Result)->Void){
    guard let value=data["key"] else{return}
    self.completion(.success(value))
}

// После SwiftFormat
func processData(
    data: [String: Any],
    completion: (Result) -> Void
) {
    guard let value = data["key"] else { return }
    completion(.success(value))
}

如何开始使用?

通过 Homebrew 安装:

brew install swiftformat

基本用法:

# Форматировать все файлы в текущей директории
swiftformat .

# Только проверить стиль без изменений (линтер)
swiftformat --lint .

对于项目,建议将 SwiftFormat 添加为 Xcode 中的构建步骤或 Git 中的 pre-commit 钩子。这样,每次提交前代码都会自动格式化。

配置的灵活性

SwiftFormat 理解每个项目都有其独特的样式要求。你可以:

  • 通过 --disable 禁用单个规则
  • 在项目根目录创建 .swiftformat 文件
  • 通过注释为特定文件配置行为

配置示例:

# .swiftformat
--indent 4
--disable trailingCommas
--enable isEmpty
--header "Copyright (c) {year} MyCompany"

为什么要尝试?

  1. 节省时间 — 不再花数小时进行手动格式化
  2. 风格一致 — 不再为括号应该放在哪里而争论
  3. 清晰的 git 历史 — 更少的"风格"提交
  4. 专注于逻辑 — 专注于真正重要的事情

SwiftFormat 特别适用于:

  • 2 人以上的开发团队
  • 开发历史较长的项目
  • 频繁的代码审查
  • 维护开源项目质量

深入了解

该项目自 2016 年以来一直在积极开发,在 GitHub 上拥有超过 8.5k 颗星,并支持所有当前 Swift 版本。其核心是一个强大的 Swift 代码解析器和一个可以像乐高积木一样组合使用的规则系统。

# Показать все доступные правила
swiftformat --rules

# Информация о конкретном правиле
swiftformat --rule-info redundantSelf

替代方案

  • SwiftLint:更专注于发现代码问题而非格式化
  • 手工脚本:需要维护且通常不够灵活

SwiftFormat 的主要优势在于它不仅仅发现问题——而是立即修复它们。

SwiftFormat 不仅仅是一个"工具"——对于厌倦了无尽样式修复的团队来说,它是真正的救星。它负责所有常规的格式化工作,让你能够专注于解决真正的问题。

尝试将它添加到你的工作流程中——第一次运行后你就会看到效果。你的代码会变得更整洁,生活也会变得更轻松。