SwiftLint
一直以来,我都非常注重代码的风格,例如变量和方法的命名、是否需要空白行、如果让代码更加简短并且保持高可读性等等,有时候我会对一个变量或者方法名纠结好久,就是为了找到一个更清晰易懂的名字。
SwiftLint是一个检查Swift代码风格的第三方库,他可以让我们在编写代码的时候减少不必要的错误和冗余代码,并且使代码更加清晰易懂。尽早养成一个良好的编程习惯非常重要。
大家可以先看看有哪些良好的Swift编程习惯:swift-style-guide >>,这个中文版的,英语好的可以去看英文版的。
安装
用Homebrew安装:brew install swiftlint
在Xcode添加运行脚本
if which swiftlint >/dev/null; then
swiftlint
else
echo "warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint"
fi
添加方法如下图:
xcode添加脚本.png添加配置文件
在想要执行代码风格检查的文件夹新建一个名为.swiftlint.yml
的文件(注意不要漏了前面的点),我们可以在这个文件添加一些自定义的规则:
-
disabled_rules
:从默认的可用规则集合中,禁用规则 -
opt_in_rules
:激活不在默认的可用规则集合的规则 -
whitelist_rules
:白名单规则,只有在这个列表的规则才会被激活,在这个列表激活的规则不能出现在disabled_rules
或者opt_in_rules
。
下面是自定义配置文件的示例:
disabled_rules: # 禁用规则
- colon
- comma
- control_statement
opt_in_rules: # 可选规则
- empty_count
- missing_docs
# 执行这个命令可以查看所有规则: swiftlint rules
included: # 指定需要进行风格检查的路径
- Source
excluded: # 指定不需要进行风格检查的路径,优先于included
- Carthage
- Pods
- Source/ExcludedFolder
- Source/ExcludedFile.swift
# 自定义某个规则
force_cast: warning # 隐式地
force_try:
severity: warning # 显式地
# 有warning和error的规则,可以仅仅设置warning
# 隐式地
line_length: 110
# 使用一个数组隐式地设置
type_body_length:
- 300 # warning
- 400 # error
# 或者显式地设置
file_length:
warning: 500
error: 1200
# 命名规则可以为min_length和max_length设置warnings或者errors
# 另外可以设置某些名字除外
type_name:
min_length: 4 # 只设置 warning
max_length: # 同时设置warning和error
warning: 40
error: 50
excluded: iPhone # 这些字符串除外
identifier_name:
min_length: # 只设置 min_length
error: 4 # 只设置 error
excluded: # 这些字符串除外
- id
- URL
- GlobalAPIKey
reporter: "xcode" # 指定报告类型 (xcode, json, csv, checkstyle, junit, html, emoji)
swiftlint命令
autocorrect 自动更正warnings和errors
help 查看帮助
lint 查看当前文件夹的文件中的warnings和errors,这是默认命令
rules 查看所有规则
version 查看SwiftLint的版本
实际使用
下面是我在某个项目中实际运用SwiftLint。.swiftlint.yml
配置文件如下:
included:
- LBJWeChat
excluded:
- Pods
cyclomatic_complexity:
warning: 20
error: 30
disabled_rules:
- trailing_newline
- opening_brace
- empty_count
- comma
- colon
- force_cast
- type_name
- trailing_semicolon
- force_try
- function_body_length
- nesting
- variable_name
- operator_whitespace
- control_statement
- legacy_constant
- line_length
- return_arrow_whitespace
- trailing_whitespace
- closing_brace
- statement_position
- type_body_length
- todo
- legacy_constructor
- valid_docs
- missing_docs
- file_length
- leading_whitespace
identifier_name:
excluded: id # 允许命名为id
在刚开始时,我们先把所有想要检查的规则放到disabled_rules
,然后每次删除一个规则,删除后记得保存。删除一个规则后,在终端执行swiftlint
,就能看到有多少个warning和error,例如这个执行结果有36个warnings和5个errors:Done linting! Found 36 violations, 5 serious in 55 files.
某些规则的warning可以让swiftlint自动帮我们解决,例如trailing_newline
、comma
和colon
等等,执行swiftlint autocorrect
即可。如果不能自动解决的,那么需要自己手动一个个改。
直到disabled_rules
列表的所有规则删除完后,代码风格检查工作也完成了。
更新SwiftLint
如果SwiftLint有新版本,在终端执行brew upgrade swiftlint
,然后在Build一下,看看项目有哪些代码风格问题。
完
如果有问题,欢迎大家留言。同时欢迎真心喜欢Swift的童鞋加入我管理的Swift开发群:536353151
,本群只讨论Swift相关内容。谢谢!(目前群里人数不多,呵呵)
网友评论