Swift 语言指南¶
linthis 使用 swiftlint 进行代码检查,使用 swift-format 进行代码格式化。
支持的文件扩展名¶
.swift
必需工具¶
代码检查:swiftlint¶
# macOS(推荐)
brew install swiftlint
# 或通过 Mint
mint install realm/SwiftLint
# 验证安装
swiftlint version
格式化:swift-format¶
# macOS
brew install swift-format
# 或从源码构建
git clone https://github.com/apple/swift-format.git
cd swift-format
swift build -c release
# 验证安装
swift-format --version
配置¶
基本示例¶
# .linthis/config.toml
[swift]
max_complexity = 15
excludes = ["Pods/**", "Carthage/**", ".build/**"]
禁用特定规则¶
[swift.rules]
disable = [
"line_length",
"trailing_whitespace"
]
自定义规则¶
[[rules.custom]]
code = "swift/no-print"
pattern = "\\bprint\\s*\\("
message = "Use os_log or Logger instead of print()"
severity = "warning"
languages = ["swift"]
[[rules.custom]]
code = "swift/force-unwrap"
pattern = "\\!(?![=])"
message = "Avoid force unwrapping"
severity = "warning"
suggestion = "Use optional binding or nil coalescing"
languages = ["swift"]
CLI 用法¶
# 仅检查 Swift 文件
linthis -c --lang swift
# 仅格式化 Swift 文件
linthis -f --lang swift
SwiftLint 配置¶
创建 .swiftlint.yml:
disabled_rules:
- trailing_whitespace
- line_length
opt_in_rules:
- empty_count
- closure_spacing
line_length:
warning: 120
error: 150
excluded:
- Pods
- Carthage
- .build
Swift-Format 配置¶
创建 .swift-format:
{
"version": 1,
"lineLength": 120,
"indentation": {
"spaces": 4
},
"lineBreakBeforeControlFlowKeywords": false,
"lineBreakBeforeEachArgument": true
}
常见问题¶
SwiftLint 未找到¶
Warning: No swift linter available for swift files
Install: brew install swiftlint
注意:SwiftLint 主要只支持 macOS。
SPM 包被检查¶
添加到排除项:
[swift]
excludes = [".build/**", "Package.resolved"]
Xcode 管理的文件¶
将生成的文件添加到排除项:
[swift]
excludes = ["*.generated.swift", "R.generated.swift"]
最佳实践¶
- 使用 .swiftlint.yml:按项目配置规则
- 强制解包检测:对
!使用发出警告 - SPM 排除:排除
.build目录 - 行长度:120 字符对 Swift 项目较为常见