SwiftFormat:Swift 项目的代码格式化利器
文章目录
- SwiftFormat:Swift 项目的代码格式化利器
- 不只是调整空格
- 装法多到离谱
- 配置灵活
- 实际体验
- 值不值得用
SwiftFormat:Swift 项目的代码格式化利器
做 Swift 开发的人大概都有过这种经历:团队里每个人写的代码风格都不一样,有人缩进用 4 空格,有人用 Tab,有人喜欢把self写出来,有人从来不写。Code Review 的时候,格式问题占了一半的讨论时间。
SwiftFormat 就是专门解决这个问题的。它是 Nick Lockwood 开发的 Swift 代码格式化工具,拿到 GitHub 上已经积累了 8800 多颗 Star,基本成了 Swift 项目的标配工具之一。
不只是调整空格
很多人以为代码格式化工具就是统一缩进和换行,SwiftFormat 远不止这些。它内置了 50 多条规则,能做的事情包括:
- 自动插入或移除隐式的
self关键字 - 去掉多余的括号
- 统一尾随闭包的写法
- 修正各种偏离 Swift 惯用写法的代码
简单说,它不光管"排版",还管"写法"。跑一遍 SwiftFormat,代码看起来就像是同一个人写的。
装法多到离谱
SwiftFormat 的一个特点是接入方式极其灵活。不管你的工作流是什么样的,总能找到合适的集成方式:
命令行:brew install swiftformat装完,终端里跑swiftformat .就能格式化当前目录下所有 Swift 文件。
Xcode 插件:装一个 SwiftFormat for Xcode 应用,重启 Xcode 后 Editor 菜单里就会多出 SwiftFormat 选项,一键格式化当前文件。
Xcode Build Phase:在项目的 Build Phases 里加一段 Run Script,每次编译自动格式化。适合强制统一团队代码风格。
SwiftPM 插件:如果你的项目用 Swift Package Manager,可以直接把 SwiftFormat 加为依赖,然后通过swift package plugin swiftformat调用。
编辑器集成:VSCode 通过 Run on Save 扩展可以实现保存时自动格式化,Sublime Text 和 Nova 也有对应的插件。
Git Hook:配合 git-format-staged,可以在git commit时自动格式化暂存区的代码。
Docker:官方提供了 Docker 镜像,docker run一行命令搞定,适合 CI 环境。
配置灵活
SwiftFormat 的配置分为"规则"和"选项"两部分。你可以在项目根目录放一个.swiftformat文件,写上团队约定的格式参数:
--allman true --indent tab --disable elseOnSameLine,semicolons子目录里也可以放.swiftformat,覆盖上层的配置。不同目录用不同的格式规则,对大型项目很实用。
如果不想手动配置,--infer-options参数能扫描现有代码,自动推断出一套匹配当前风格的参数。
还能在代码里用注释指令临时启用或禁用某条规则:
// swiftformat:disable:next redundantSelfletfoo=bar实际体验
SwiftFormat 支持 macOS、Linux 和 Windows 三个平台。用 Homebrew 或 Mint 装都是一行命令的事。GitHub Actions 的 macOS Runner 上已经预装了 SwiftFormat,CI 配置也省了。
项目用 MIT 协议开源,代码量不小但结构清晰。规则列表在 Rules.md 里有完整文档,每条规则都能通过--rule-info查看详细说明。
有一点需要注意:SwiftFormat 会直接覆盖源文件。建议在 Git 管理的项目里用,格式化后检查一下 diff,确认没问题再提交。
值不值得用
如果你是一个人的小项目,代码风格全靠自觉,用不用都行。但只要团队超过两个人,或者项目要长期维护,SwiftFormat 基本是必需品。它把代码风格从"口头约定"变成了"自动执行",省下来的 Review 时间可以聊点更有价值的事。
MIT 协议,免费用,直接上手。
是必需品。它把代码风格从"口头约定"变成了"自动执行",省下来的 Review 时间可以聊点更有价值的事。
MIT 协议,免费用,直接上手。
