规则目录,按字母排序排列
anyobject_protocol
对纯类协议使用 AnyObject
而不是 class
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 |
---|---|---|---|
anyobject_protocol | 未启用 | yes | lint |
示例
1 | // 推荐 |
array_init
序列转化成数组时, 优先使用数组转化, 而不是seq.map{$0} 将序列转换为数组
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 |
---|---|---|---|
array_init | 未启用 | no | lint |
示例
1 | // 推荐 |
attributes
函数和类型中,属性应该在一行
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 |
---|---|---|---|
attributes | 未启用 | no | style |
示例
1 | // 推荐 |
block_based_kvo
使用Swift 3.2+时,首选系统的KVO 的API和keypath
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 |
---|---|---|---|
block_based_kvo | 启用 | no | idiomatic |
示例
1 | // 推荐 |
class_delegate_protocol
委托协议应该仅是class,可以被弱引用
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
class_delegate_protocol | 启用 | no | lint |
示例
1 | // 推荐 |
Closing Brace Spacing
小括号包含大括号的话之间不能有空格
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
closing_brace | 启用 | yes | style |
示例
1 | // 推荐 |
Closure Body Length
必报的函数体不应该太多行,20行警告,100行报错
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 |
---|---|---|---|
closure_body_length | 未启用 | no | metrics |
Closure End Indentation
闭包的封闭端和开始端有相同的缩进
就是 大括号(一般是方法)上下对齐的问题,这样使code看起来更加整洁
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
closure_end_indentation | 未启用 | no | style |
示例
1 | // 推荐 |
Closure Parameter Position
闭包参数位置,闭包参数应该和大括号左边在同一行
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
closure_parameter_position | 启用 | no | style |
示例
1 | // 推荐 |
Closure Spacing
在闭包的{}中间要有一个空格,如map({ $0 })
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
closure_spacing | 未启用 | no | style |
示例
1 | // 推荐 |
Collection Element Alignment
集合中的所有元素应该垂直对齐
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 |
---|---|---|---|
collection_alignment | 未启用 | no | style |
示例
1 | // 推荐 |
Colon
冒号应该紧挨左边,右边空一格
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
colon | 启用 | yes | style |
示例
1 | // 不会触发警告 |
Comma Spacing
逗号应该紧挨左边,右边空一格
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
comma | 启用 | yes | style |
示例
1 | // 推荐 |
Compiler Protocol Init
推荐使用自变量初始化变量
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
compiler_protocol_init | 启用 | no | lint |
示例
1 | // 推荐 |
Conditional Returns on Newline
条件语句在下一行返回
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
conditional_returns_on_newline | 未启用 | no | style |
示例
1 | // 推荐 |
contains_over_first_not_nil
类似first函数不能判断是否为nil
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
contains_over_first_not_nil | 未启用 | no | performance |
示例
1 | // 推荐 |
control_statement
控制语句, for,while,do,catch语句中的条件不能包含在()中
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
control_statement | 启用 | no | style |
示例
1 | // 推荐 |
custom_rules
自定义规则。这个属性可以通过提供正则表达式来创建自定义规则,可选指定语法类型搭配,安全、级别和要陈列的什么信息。这个属性推荐
熟悉使用正则表达式的人使用。
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
custom_rules | 启用 | no | style |
cyclomatic_complexity
循环复杂度。函数体的复杂度应该要限制,这个属性主要约束条件句、循环句中的循环嵌套问题,当嵌套太多的循环时,则会触发swiftlint中的warning和error,当达到10个循环嵌套时就会报warning,达到20个循环嵌套时就会报error
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
cyclomatic_complexity | 启用 | no | metrics |
discarded_notification_center_observer
当使用注册的通知时, 应该存储返回的观察者, 便于用完之后移除通知
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
discarded_notification_center_observer | 启用 | no | lint |
示例
1 | // 推荐 |
discouraged_direct_init
阻止直接初始化导致的错误类型, 有类方法的,用类方法初始化(不建议直接init初始化)
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
discouraged_direct_init | 启用 | no | lint |
示例
1 | // 推荐 |
discouraged_optional_boolean
不建议使用可选布尔值
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
discouraged_optional_boolean | 未启用 | no | idiomatic |
示例
1 | // 推荐 |
discouraged_object_literal
优先使用对象初始化方法, 不建议使用代码块初始化
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
discouraged_object_literal | 未启用 | no | idiomatic |
示例
1 | // 不建议 |
dynamic_inline
避免一起使用 dynamic 和 @inline(_ _always), 否则报 error
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
dynamic_inline | 启用 | no | lint |
示例
1 | // 正确的做法 |
empty_count
建议使用isEmpty判断,而不是使用count==0判断
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
empty_count | 未启用 | no | performance |
示例
1 | // 推荐 |
empty_enum_arguments
当枚举与关联类型匹配时,如果不使用它们,参数可以省略
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
empty_enum_arguments | 启用 | yes | style |
示例
1 | // 推荐 |
empty_parameters
闭包参数为空时,建议使用() ->Void, 而不是Void ->Void
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
empty_parameters | 启用 | yes | style |
示例
1 | // 推荐 |
empty_parentheses_with_trailing_closure
在使用尾随闭包的时候, 应该尽量避免使用空的圆括号
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
empty_parentheses_with_trailing_closure | 启用 | yes | style |
explicit_acl
所有属性和方法的声明, 都应该明确指定修饰关键字
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
explicit_acl | 未启用 | no | idiomatic |
示例
1 | // 推荐 |
explicit_type_interface
声明的属性应该明确其类型, 如: var myVar: Int = 0
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
explicit_type_interface | 未启用 | no | idomatic |
示例
1 | // 推荐 |
extension_access_modifier
在自定义类中,推荐使用extension扩展
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
extension_access_modifier | 未启用 | no | idiomatic |
no_extension_access_modifier
在extension扩展前面,不建议使用(fileprivate, public)等修饰符
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
no_extension_access_modifier | 未启用 | no | idiomatic |
示例
1 | // 不推荐 |
fallthrough
switch语句中不建议使用fallthrough
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
fallthrough | 启用 | no | idiomatic |
示例
1 | // 推荐 |
fatal_error_message
执行fatalError错误时,建议有一个提示信息; 如:fatalError(“Foo”)
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
fatal_error_message | 未启用 | no | idiomatic |
示例
1 | // 推荐 |
file_header
文件头。新建的文件开始的注释应该一样
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
file_header | 未启用 | no | style |
示例
1 | /// 不会触发warning |
file_length
文件内容行数, 超过400行warning, 超过1000行给error
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
file_length | 启用 | no | metrics |
first_where
不建议在使用filter和map函数后直接使用.first
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
first_where | 未启用 | no | performance |
示例
1 | public static let description = RuleDescription( |
for_where
在for循环中,不建议使用单个if语句或者只使用一次循环变量,可使用where或者if{}else{}语句
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
for_where | 启用 | no | idiomatic |
示例
1 | // 推荐 |
force_cast
不建议直接强解类型
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
force_cast | 启用 | no | idiomatic |
示例
1 | // 推荐 |
force_try
对会抛出异常(throws)的方法,不建议try!强解
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
force_try | 启用 | no | idiomatic |
示例
1 | func myFunction() throws { } |
force_unwrapping
强制解包/拆包。我们知道,当一个类型是可选类型的时候,当我们获取值时,需要强制解包(也叫隐式解包), 通常我们是在一个变量或者所需要的常量、类型等后面加一个“ !”, 然而,swiftlint建议强制解包应该要避免, 否则将给予warning
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
force_unwrapping | 未启用 | no | idiomatic |
示例
1 | // 推荐,不会触发warning |
function_body_length
函数体长度, 函数体不应该跨越太多行, 超过40行给warning, 超过100行直接报错,可以禁用规避掉
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
function_body_length | 启用 | no | metrics |
function_parameter_count
函数参数个数 函数参数数量(init方法除外)应该少点,不要太多,swiftlint规定函数参数数量超过5个给warning, 超过8个直接报error,可以禁用规避掉
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
function_parameter_count | 启用 | no | metrics |
generic_type_name
泛型类型名称只能包含字母数字字符,以大写字母开头,长度介于1到20个字符之间
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
generic_type_name | 未启用 | no | idiomatic |
示例
1 | // 推荐 |
identifier_name
变量标识符名称应该只包含字母数字字符,并以小写字母开头或只应包含大写字母。在上述例外情况下,当变量名称被声明为静态且不可变时,变量名称可能以大写字母开头。变量名称不应该太长或太短
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
identifier_name | 启用 | no | style |
示例
1 | internal struct IdentifierNameRuleExamples { |
implicit_getter
对于只有只读属性不建议重写get方法
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
implicit_getter | 启用 | no | style |
示例
1 | //不会触发error |
implicit_return
建议使用隐式返回闭包; 如: foo.map({ $0 + 1 })
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
implicit_return | 未启用 | no | style |
示例
1 | // 推荐 |
implicitly_unwrapped_optional
尽量避免隐式解析可选类型的使用
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
implicitly_unwrapped_optional | 未启用 | no | idiomatic |
示例
1 | public static let description = RuleDescription( |
is_disjoint
初始化集合Set时,推荐使用Set.isDisjoint(), 不建议:Set.intersection
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
is_disjoint | 启用 | no | idiomatic |
示例
1 | // 推荐写法 |
joined_default_parameter
joined方法使用默认分隔符时, 建议使用joined()方法, 而不是joined(separator: “”)方法
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
joined_default_parameter | 未启用 | yes | idiomatic |
示例
1 | // 推荐 |
large_tuple
定义的元组成员个数,超过两个warning
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
large_tuple | 启用 | no | metrics |
示例
1 | // 不推荐 |
leading_whitespace
文件开始不应该有空格或者换行, 否则就会触发warning
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
leading_whitespace | 启用 | yes | style |
legacy_cggeometry_functions
当获取某个视图的宽、高、最小X、最大X值等等,swiftlint推荐使用swift的标准语法,尽量不要使用从Objective-C中的遗留版本,尽量语法swift化
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
legacy_cggeometry_functions | 启用 | yes | idiomatic |
示例
1 | // 推荐 |
legacy_constant
和属性 legacy_cggeometry_functions
一样, 结构范围常数尽量分开、明确、具体, 不要使用OC的遗留整体常数
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
legacy_constant | 启用 | yes | idiomatic |
示例
1 | // 推荐 |
legacy_constructor
swiftlint要求系统自带构造器, 使用swift语法化,不要使用OC版本的构造器
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
legacy_constructor | 启用 | yes | idiomatic |
示例
1 | // swift语法,相信之后系统也会强制规定使用 |
legacy_nsgeometry_functions
ns类几何函数, 和前面的几个属性一样, 使用swift点语法函数, 不使用以前的版本。
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
legacy_nsgeometry_functions | 启用 | yes | idiomatic |
示例
1 | /// 正确 |
let_var_whitespace
let和var语句应该用空白行与其他语句分开
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
let_var_whitespace | 未启用 | no | style |
示例
1 | // 推荐 |
line_length
行的字符长度属性。官方的规定是超过120字符就给warning, 超过200个字符就直接报error!
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
line_length | 启用 | no | metrics |
literal_expression_end_indentation
字典和数组的开头和结尾要有相同的缩进格式
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
literal_expression_end_indentation | 未启用 | no | style |
mark
标记方法或者属性。
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
mark | 启用 | yes | lint |
示例
1 | // 推荐 |
multiline_arguments
调用函数和方法时, 其参数应该在同一行上,或者每行一个
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
multiline_arguments | 未启用 | no | style |
示例
1 | // 不推荐 |
multiline_parameters
声明函数和方法时, 其参数应该在同一行上,或者每行一个
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
multiline_parameters | 未启用 | no | style |
示例
1 | // 不推荐 |
multiple_closures_with_trailing_closure
当函数有多个闭包时, 不建议使用尾随闭包语法
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
multiple_closures_with_trailing_closure | 启用 | no | style |
示例
1 | // 不推荐 |
nesting
嵌套。类型嵌套至多一级结构, 函数语句嵌套至多五级结构。
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
nesting | 启用 | no | metrics |
nimble_operator
快捷操作符。和自由匹配函数相比,更喜欢快捷操作符,比如:>=、 ==、 <=、 <等等。
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
nimble_operator | 未启用 | yes | idiomatic |
示例
1 | // 推荐 |
no_grouping_extension
只有class和protocol可以使用extension,其他类型不可使用
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
no_grouping_extension | 未启用 | no | idiomatic |
示例
1 | // 不推荐 |
notification_center_detachment
对象移除通知只能在deinit移除self,函数中不能removeObserver(self)
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
notification_center_detachment | 启用 | no | lint |
示例
1 | // 不会触发warning |
number_separator
数字分割线。当在大量的小数中, 应该使用下划线来作为千分位分割线
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
number_separator | 未启用 | yes | style |
示例
1 | // 推荐 |
object_literal
swiftlint表示比起图片和颜色初始化,更喜欢对象初始化。因为swift初始化可以用表情,图片,颜色等,这不符合项目中的一些习惯用法。
与 discouraged_object_literal
互斥, 个人不推荐
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
object_literal | 未启用 | no | idiomatic |
示例
1 | // 推荐 |
opening_brace
花括号之前应该有一个空格,且与声明在同一行
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
opening_brace | 启用 | yes | style |
示例
1 | // 建议 |
operator_usage_whitespace
操作符使用规则,操作符两边应该有空格。比如 “+” “-” “??”
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
operator_usage_whitespace | 未启用 | yes | style |
示例
1 | // 推荐 |
operator_whitespace
空格/空白操作符。当定义空格操作符的时候,被定义的名字或类型两边应该各有一个单行空格操作符
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
operator_whitespace | 启用 | no | style |
示例
1 | // 触发警告 |
overridden_super_call
一些重写的方法应该调用super.(父类的)方法
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
overridden_super_call | 未启用 | no | lint |
override_in_extension
在extension中,不能重写未声明的属性和未定义的方法
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
override_in_extension | 未启用 | no | lint |
示例
1 | // 错误写法 |
pattern_matching_keywords
在switch-case语句中, 建议不要将case中的let和var等关键字放到元祖内
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
pattern_matching_keywords | 未启用 | no | style |
prefixed_toplevel_constant
类似全局常量,建议前缀以k开头
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
prefixed_toplevel_constant | 未启用 | no | style |
示例
1 | // 推荐 |
private_action
IBActions修饰的方法,应该都是私有的
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
private_action | 未启用 | no | lint |
private_outlet
IBOutlets修饰的属性应该都是私有的
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
private_outlet | 未启用 | no | lint |
private_over_fileprivate
private比fileprivate的私有程度更高
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
private_over_fileprivate | 启用 | yes | idiomatic |
private_unit_test
私有的单元测试。被标记为private的单元测试不会被测试工具XCTest运行, 也就是说,被标记为private的单元测试会被静态跳过
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
private_unit_test | 启用 | no | lint |
示例
1 | private ↓class FooTest: XCTestCase { ...............继承于测试用例类XCTestCase, 被标记为private,所以触发warning |
prohibited_super_call
一些方法不应该调用父类的方法
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
prohibited_super_call | 未启用 | no | lint |
示例
1 | //以下方法不建议调用父类的方法 |
protocol_property_accessors_order
在协议中声明属性时,访问者的顺序应该是get set
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
protocol_property_accessors_order | 启用 | yes | style |
示例
1 | // 建议 |
quick_discouraged_call
在单元测试中,不建议在describe和content比保重直接调用方法和类
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
quick_discouraged_call | 未启用 | no | lint |
quick_discouraged_focused_test
在单元测试中,不建议集中测试,否则可能不能运行成功
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
quick_discouraged_focused_test | 未启用 | no | lint |
quick_discouraged_pending_test
单元测试中阻止未进行的测试单元
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
quick_discouraged_pending_test | 未启用 | no | lint |
redundant_discardable_let
不需要初始化方法返回结果时,建议使用: _ = Person(), 而不是:let _ = Person()
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
redundant_discardable_let | 启用 | yes | style |
示例
1 | // 推荐 |
redundant_nil_coalescing
使用可能为为nil的可选值时,建议使用: str ?? “”, ??左右两侧要有一个空格
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
redundant_nil_coalescing | 未启用 | yes | idiomatic |
示例
1 | // 建议 |
redundant_optional_initialization
初始化nil变量时,不建议赋值nil
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
redundant_optional_initialization | 启用 | yes | idiomatic |
示例
1 | // 不会触发warning |
redundant_string_enum_value
在定义字符串枚举的时候, 当字符串枚举值等于枚举名称时,可以不用赋值
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
redundant_string_enum_value | 启用 | no | idiomatic |
示例
1 | // 不会触发warning |
redundant_void_return
当函数返回值为Void时,建议不写返回值, 定义常量或者变量的时候可以
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
redundant_void_return | 启用 | yes | idiomatic |
示例
1 | // 不会触发warning |
required_enum_case
定义的枚举,必须有与其对应的操作实现
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
required_enum_case | 未启用 | no | lint |
return_arrow_whitespace
swiftlint推荐返回箭头和返回类型应该被空格分开
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
return_arrow_whitespace | 启用 | yes | style |
示例
1 | // 推荐写法 |
shorthand_operator
在swiftlint中, 就是我们常用的简洁操作运算符,比如:+= , -=, *=, /= 等等。在swiftlint中,在做一些赋值操作的时候,推荐使用简短操作符
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
shorthand_operator | 启用 | no | style |
示例
1 | /// 不推荐使用 |
single_test_class
单元测试中,测试文件应该包含一个QuickSpec或XCTestCase类
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
single_test_class | 未启用 | no | style |
sorted_first_last
在获取某数组中最大最小值时,建议使用min和max函数,而不是sorted().first和sorted().lase
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
sorted_first_last | 未启用 | no | style |
sorted_imports
分类/有序导入。 这个属性有些奇怪, 要求导入的时候导入的类要按顺序导入
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
sorted_imports | 未启用 | yes | style |
示例
1 | //建议写法 |
statement_position
陈述句位置, 这里主要指的是 else 和 catch 前面要加一个空格, 也不能大于1个空格, 否则就会触发警告
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
statement_position | 启用 | yes | style |
示例
1 | /// 没有空格,触发warning |
strict_fileprivate
extension中不建议使用fileprivate 修饰方法和属性
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
strict_fileprivate | 未启用 | no | idiomatic |
superfluous_disable_command
被禁用的规则不会在禁用区域触发警告
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
superfluous_disable_command | 启用 | no | lint |
switch_case_alignment
switch-case语句中switch和case应该垂直对齐
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
switch_case_alignment | 启用 | no | style |
示例
1 | // 推荐 |
switch_case_on_newline
在switch语法里, case应该总是在一个新行上面
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
switch_case_on_newline | 启用 | no | idiomatic |
示例
1 | // swiftlint表示会触发warning |
syntactic_sugar
swiftlint推荐使用速记语法糖, 例如 [Int] 代替 Array, 强烈建议推荐使用
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
syntactic_sugar | 启用 | no | idiomatic |
示例
1 | /// 触发warning |
todo
TODO 和 FIXME 应该避免使用, 使用“notaTODO 和 notaFIXME”代替。另外, 和 MARK 标记不同的是, “notaTODO 和 notaFIXME”没有空格要求
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
todo | 启用 | no | lint |
trailing_closure
关于闭包中{}的使用, 推荐使用尾随闭包的语法
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
trailing_closure | 未启用 | no | style |
示例
1 | //推荐使用 |
trailing_comma
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
trailing_comma | 启用 | yes | style |
trailing_newline
文件(属性、方法)结束的的时候(“}”之前), 应该有一个空格新行,但这里要注意的是
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
trailing_newline | 启用 | yes | style |
示例
1 | /// 空一行,不会触发警告 |
trailing_semicolon
尽管在变量或常量赋值之后加不加分号在swift中没有硬性的要求,但是为了使code style更swift化,所以尽量或者绝对不要加“;”
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
trailing_semicolon | 启用 | yes | idiomatic |
trailing_whitespace
函数方法结束后,不建议添加空格行, 和vertical_whitespace貌似有冲突
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
trailing_whitespace | 启用 | yes | style |
示例
1 | /// 下面这个例子不会触发警告,但是一旦其中有一个空行就会触发警告trailing_whitespace, 这和vertical_whitespace实质上有些冲突,vertical_whitespace要求两行code之间不超过1行,要么没有空行,要么只有1行,而trailing_whitespace要求没有空行!!! |
type_body_length
类型体长度。类型体长度不应该跨越太多行, 超过200行给warning,超过350行给error。一般是大括号或者括号内, 比如定义一个enum或struct
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
type_body_length | 启用 | no | metrics |
type_name
类型名, 类型名应该只包含字母数字字符, 并且以大写字母开头,长度在3-40个字符
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
type_name | 启用 | no | idiomatic |
unneeded_break_in_switch
在switch-case语句中, 有方法调用或操作时,避免使用break语句
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
unneeded_break_in_switch | 启用 | no | idiomatic |
示例
1 | //不会触发warning |
unneeded_parentheses_in_closure_argument
在定义或使用闭包时,闭包参数不建议使用括号()
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
unneeded_parentheses_in_closure_argument | 未启用 | yes | style |
示例
1 | //建议 |
unused_closure_parameter
swiftlint建议最好把不使用的闭包参数使用 “_”代替
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
unused_closure_parameter | 启用 | yes | lint |
示例
1 | //不会触发warning |
unused_enumerated
在for遍历数组时, 如有未使用的索引,不建议使用.enumerated()
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
unused_enumerated | 启用 | no | idiomatic |
示例
1 | //不会触发warning |
unused_optional_binding
在使用if判断某变量是否为nil的时候, 不建议使用下划线(_)
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
unused_optional_binding | 启用 | no | style |
示例
1 | //不会触发warning |
valid_ibinspectable
@IBInspectable在swiftlint中的使用需要注意, 第一必须是变量, 第二必须要有指定的类型,如果指定的类型是可选类型或者隐式类型,则目前官方只支持以下几种类型:String, NSString, UIColor, NSColor, UIImage, NSImage.
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
valid_ibinspectable | 启用 | no | lint |
示例
1 | /// 指定为变量var, 类型为String?和String! |
vertical_parameter_alignment
垂直方向上的参数对齐。当函数参数有多行的时候, 函数参数在垂直方向上应该对齐(参数换行的时候左边对齐)
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
vertical_parameter_alignment | 启用 | no | style |
示例
1 | //不会触发warning |
vertical_parameter_alignment_on_call
当调用多个参数的函数时,如果参数多行显示,则应该垂直对齐
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
vertical_parameter_alignment_on_call | 未启用 | no | style |
示例
1 | //不会触发warning |
vertical_whitespace
垂直方向上的空格行,限制为一行(注释除外)
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
vertical_whitespace | 启用 | yes | style |
示例
1 | /// 没有空格, nonTriggerWarning |
void_return
多余的返回值为空, 在函数声明的时候,返回值为空是多余的。定义常量或者变量的时候可以
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
void_return | 启用 | yes | style |
示例
1 | /// 这个属性要求这样写, 返回值为空省略 |
weak_delegate
代理应该写成weak类型(弱代理)来避免循环引用
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
weak_delegate | 启用 | no | lint |
示例
1 | /// 1.1 编译通过 |
xctfail_message
单元测试中,XCTFail调用应该包括声明描述
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
xctfail_message | 启用 | no | idiomatic |
yoda_condition
识别码 | 默认是否启用 | 是否支持自动更正 | 类型 | 默认配置 |
---|---|---|---|---|
yoda_condition | 未启用 | no | lint |
示例
1 | //不会触发warning |