SwiftFormat:Swift 代码的自动造型师
8,841 星标

当代码自动格式化自身时
想象一下:在一个五人开发团队中,每个人都按自己的方式写代码。有的在括号前加空格,有的不加;有的喜欢将函数参数分行书写,有的则全部写在同一行。结果就是代码库风格参差不齐,代码审查变成了无休止的代码风格争论。
SwiftFormat 正是为解决这一问题而生——一款用于自动格式化 Swift 代码的工具。它不仅仅添加空格和缩进,而是将代码统一到同一标准,修复数百种细微的不一致问题。
SwiftFormat 能做什么?
-
深度样式处理:
- 修正缩进和对齐
- 移除冗余的
self和括号 - 修复访问修饰符顺序
- 统一闭包声明风格
-
灵活的配置选项:
- 超过 50 条格式化规则
- 支持配置文件
.swiftformat - 能够创建自定义规则
-
任意场景集成:
- 命令行手动执行
- 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"
为什么要尝试?
- 节省时间 — 不再花数小时进行手动格式化
- 风格一致 — 不再为括号应该放在哪里而争论
- 清晰的 git 历史 — 更少的"风格"提交
- 专注于逻辑 — 专注于真正重要的事情
SwiftFormat 特别适用于:
- 2 人以上的开发团队
- 开发历史较长的项目
- 频繁的代码审查
- 维护开源项目质量
深入了解
该项目自 2016 年以来一直在积极开发,在 GitHub 上拥有超过 8.5k 颗星,并支持所有当前 Swift 版本。其核心是一个强大的 Swift 代码解析器和一个可以像乐高积木一样组合使用的规则系统。
# Показать все доступные правила
swiftformat --rules
# Информация о конкретном правиле
swiftformat --rule-info redundantSelf
替代方案
- SwiftLint:更专注于发现代码问题而非格式化
- 手工脚本:需要维护且通常不够灵活
SwiftFormat 的主要优势在于它不仅仅发现问题——而是立即修复它们。
SwiftFormat 不仅仅是一个"工具"——对于厌倦了无尽样式修复的团队来说,它是真正的救星。它负责所有常规的格式化工作,让你能够专注于解决真正的问题。
尝试将它添加到你的工作流程中——第一次运行后你就会看到效果。你的代码会变得更整洁,生活也会变得更轻松。