Swift-CodeStyle Checker:SwiftLint
介绍:
SwiftLint 是一个用于强制检查 Swift 代码风格和规定的一个工具,基本上以 GitHub's Swift 代码风格指南为基础。
SwiftLint官网:
Github地址
SwiftLint中文博客(推荐):
Xcode代码规范之SwiftLint配置
Swift代码规范:
Github 公布的 Swift 代码规范
Swift Version Support
这里有一份 SwiftLint 版本和对应该 Swift 版本的对照表作为参考。
Swift 版本 | 最后一个 SwiftLint 支持版本 |
---|---|
Swift 1.x | SwiftLint 0.1.2 |
Swift 2.x | SwiftLint 0.18.1 |
Swift 3.x | SwiftLint 0.25.1 |
Swift 4.0-4.1.x | SwiftLint 0.28.2 |
Swift 4.2.x-5.0 | 最新的 |
安装
使用 Homebrew:
brew install swiftlint
XCode配置
安装完成后,需要在Xcode中配置相关设置,才能使 SwiftLint 在 Xcode 中自动检测代码规范。配置也很简单,只需要在 Xcode 的 Build Phases 中新建一个 Run Script Phase 配置项,在里面添加相关代码后,编译即可!
if which swiftlint >/dev/null; then
swiftlint
else
echo "warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint"
fi
多Xcode配置
如果有多个Xcode在同时使用,需要切换xcode的配置环境:
//切换到默认Xcode版本
sudo xcode-select -s '/Applications/Xcode.app/Contents/Developer'
//切换到其他Xcode版本
sudo xcode-select -s '/Applications/Xcode 10.1.app/Contents/Developer’
到这一步基本完成安装和基础的操作,正常运行Xcode即可获得CodeStyle的检查结果
自定义配置
除了通用的功能,我们还经常要做一些额外的事情,比如:去掉第三方库的检查、去掉或改变一些检查规则等
新建自定义配置文件
打开终端, cd 到项目根目录下
输入: touch .swiftlint.yml
可以自定义的常用配置:
disabled_rules: # 禁用指定的规则
- colon
- comma
- control_statement
opt_in_rules: # 启用指定的规则
- empty_count
- missing_docs
# 可以通过执行如下指令来查找所有可用的规则:
# swiftlint rules
included: # 执行 linting 时包含的路径。如果出现这个 `--path` 会被忽略。
- Source
excluded: # 执行 linting 时忽略的路径。 优先级比 `included` 更高。
- Carthage
- Pods
- Source/ExcludedFolder
- Source/ExcludedFile.swift
忽略引入的第三方库
在.swiftlint.yml文件中输入
excluded:
- Pods
常用的规则修改项(简单模板)
在.swiftlint.yml文件中输入
excluded: # 执行 linting 时忽略的路径。 优先级比 `included` 更高。
- Pods
disabled_rules: # 执行时排除掉的规则
- identifier_name # 命名规则必须按照驼峰原则,与后台传的Json字段命名冲突,建议排除掉
- trailing_whitespace # 每一个空行不能有空格,会与Xcode换行后自动对齐生成的空格冲突,建议排除掉
force_cast: warning # 类型判断
force_try: warning # try语句判断
cyclomatic_complexity: 20 #代码复杂度,默认为10
line_length: # 单行代码长度,默认error 120
warning: 120
error: 200
file_length: # 文件长度
warning: 500
error: 1200
function_body_length: # 函数体长度
warning: 100
error: 300
这是一个基础版本,随着项目的开展,可分阶段将规则逐渐严格起来