一、SwiftLint 简介
SwiftLint 是一个用于检查 Swift 代码规范与风格的静态分析工具。
它能够帮助团队:
-
统一代码风格
-
提前发现潜在问题
-
减少 Code Review 成本
-
提高代码可维护性
-
规范团队开发习惯
二、SwiftLint 安装方式
CocoaPods 安装
pod 'SwiftLint'
pod install
三、项目中集成 SwiftLint
执行方式
bash
Pods/SwiftLint/swiftlint
1、创建配置文件
项目根目录创建:
.swiftlint.yml
bash
baseline: .swiftlint-baseline.json
included:
- Runner
- gitsubmodules
excluded:
- Pods
- gitsubmodules/*/Pods
- gitsubmodules/**/Pods
- Flutter
- FlutterFrameworks
- build
- flutter_module
- DerivedData
- "**/Mocks/*"
- .swiftlint.yml
- lefthook.yml
- swiftlint_diff.sh
disabled_rules:
- trailing_whitespace
- line_length
- type_body_length
- file_length
- function_body_length
- cyclomatic_complexity
- identifier_name
- force_cast
- force_try
- todo
opt_in_rules:
- empty_count
- closure_spacing
- explicit_init
- redundant_nil_coalescing
- sorted_imports
force_unwrapping:
severity: warning
unused_optional_binding:
severity: warning
large_tuple:
warning: 3
error: 4
custom_rules: # 自定义规则
chinese_hardcoded_string:
name: "字符串硬编码"
regex: '(?m)^(?![^\n]*(?:\bFileLog\.\w+\s*\(|\bprint\s*\(|\bdebugPrint\s*\())[^\n]*(#*"[^"\n]*[\u4e00-\u9fff][^"\n]*"#*)'
excluded_match_kinds:
- comment
- doccomment # 排除 /// 文档注释
capture_group: 1
message: "请勿在 Swift 代码中使用中文字符串,请使用 i18n 资源。"
severity: error
included:
- ".*\\.swift"
reporter: "xcode"
执行命令行 在主工程生成.swiftlint-baseline.json基线避免对历史代码产生副作用
bash
#write_baseline: .swiftlint-baseline.json
Pods/SwiftLint/swiftlint lint --config .swiftlint.yml
#baseline: .swiftlint-baseline.json
四、Xcode 集成
1、添加 Run Script
Target -> Build Phases -> + -> New Run Script Phase
bash
if [ "${CONFIGURATION}" = "Debug" ]; then
if [ -x "${PODS_ROOT}/SwiftLint/swiftlint" ]; then
"${PODS_ROOT}/SwiftLint/swiftlint" --config "${SRCROOT}/.swiftlint.yml"
else
echo "warning: SwiftLint not found. Run pod install first."
fi
fi
2、Build 时自动检查
每次编译时:
-
自动检查代码规范
-
在 Xcode Warning 中显示问题
-
提前发现潜在风险