重视我,每天共享一个关于 iOS 的新知识
前语
SwiftLint 是 Realm 出品的一个用于强制查看 Swift 代码风格和规定的一个工具。到现在为止,这个库房在 Github 上有 18 万颗星。可见是一个非常受欢迎的库。
SwiftLint 的原理是 Hook 了 Clang 和 SourceKit 从而能够运用 AST 来表示源代码文件的更多准确成果。
今日来讲讲如安在你的项目中运用。
装置
1、运用 Homebrew
在命令行中履行:
2、运用 CocoaPods(引荐)
也能够直接在你的 swift 项目中 Podfile 文件中增加:
pod 'SwiftLint', :configuration => 'Debug'
一般来说只需求在 Debug 上装置就行了(无需带到线上),然后履行:
3、运用 Mint
命令行履行:
mint install realm/SwiftLint
运用办法
引荐运用 CocoaPods 装置 (我这里也用这种办法举例),这样多人开发的时候每个人无需再在电脑上装置一次,然后也能够很好的整合 SwiftLint 到 Xcode 系统中,从而能够使正告和过错显现到 Xcode 上。
翻开 Xcode 你的项目,点击主 Target
,选择 Build Phases
,点击加号增加一个新的“Run Script Phase
”,然后增加以下代码即可:
${PODS_ROOT}/SwiftLint/swiftlint --fix
${PODS_ROOT}/SwiftLint/swiftlint lint
由于你已经在 Podfile 中增加了 SwiftLint, pod install
之后会装置在 ${PODS_ROOT}/SwiftLint/swiftlint
这个目录,所以能够直接这么履行。
这里涉及两个命令 –fix 用来自动纠正代码,lint 命令用来在 IDE 上显现正告或报错。
在 Xcode 15 中对 Build Settings
做了一些更改,因此,当你编译项目时,SwiftLint 会遇到与缺少文件权限相关的过错,解决办法是,翻开 Build Settings
,搜索 enable_user_script
,将对应的选项改为 No 就行了。
此刻当你编译项目时,swiftlint 会自动遍历你一切的代码,校验标准,然后依据标准来给出报错或许正告。
比方我的 AppDelegate 里的某个办法字符数超过了 120 个,就会给出一个正告,由于 SwiftLint 默许有一条规矩是单行代码不能超过 120 个字符:
规矩
跟着 SwiftLint 不断发展,现在已经有超过 200 条规矩了,你能够在 这个网站 找到规矩的更新列表和更多信息。
1、默许规矩
现在有 94 条规矩是默许敞开的,不需求独立装备,就包含常见的单行不能超过 120 字符、空格标准、换行标准等等。
2、Opt-In 规矩
Opt-In 规矩现在有 134 条,默许不敞开,假如想要敞开,需求通过装备文件来独自声明,其中包含一些可开可不开的标准,比方把 count > 0 换成 isEmpty、约束强制解包等等。
3、如安在代码中关闭某个规矩
有时候或许由于某些原因,不得不在特定的代码中关掉某个规矩,SwiftLint 也给出了相关的命令:
// swiftlint:disable <rule1> [<rule2> <rule3>...]
比方我想关掉单行 120 字符的规矩,能够在 AppDelegate 文件中写入:
// swiftlint:disable line_length
line_length
便是约束 120 字符的规矩名。
当 SwiftLint 读到这行注释时,就会开端在下一行代码中忽略 line_length
这个规矩,记得在需求敞开时用 enable
来敞开,比方我需求关掉 AppDelegate 这个文件一切代码的 line_length
规矩,则能够在榜首行写
// swiftlint:disable line_length
在最后一行写 enable 来重新敞开:
// swiftlint:enable line_length
也能够运用 swiftlint:disable all
来禁用一切规矩。
还支撑在 disable 关键字后增加更切当的参数,比方:
-
swiftlint:disable:next line_length
: 关闭下一行代码的line_length
规矩 -
swiftlint:disable:this line_length
: 关闭本行代码的line_length
规矩 -
swiftlint:disable:previous line_length
: 关闭上一行代码的line_length
规矩
自定义装备
前面说了假如想翻开 Opt-In 规矩需求用到装备文件,能够在你项目的根目录下增加一个 .swiftlint.yml
文件的办法来装备 SwiftLint。能够被装备的参数有:
-
disabled_rules: 关闭某些默许敞开的规矩。
-
opt_in_rules: 一些规矩是可选的。
-
only_rules: 不能够和 disabled_rules 或许 opt_in_rules 并排。相似一个白名单,只有在这个列表中的规矩才是敞开的。
我这里来举个例子,我要禁用默许敞开的 line_length
规矩,并敞开 Opt-In 规矩中的 empty_count
规矩,那么我的 .swiftlint.yml
文件为:
disabled_rules:
- line_length
opt_in_rules:
- empty_count
然后再次运转项目,发现 line_length 的正告没有了。
当我运用 count == 0 来判空时,SwiftLint 给我了一个正告,这个便是 empty_count 规矩在起作用:
SwiftLint 还支撑一些更精细的装备,比方 line_length
默许 120 个字符,我觉得太少了,那么你能够在 .swiftlint.yml
文件中新增一行来改成 150 个:
opt_in_rules:
- empty_count
line_length: 150
更多装备相关的内容能够到 SwiftLint 官方文档中查看
参考资料
[1]
SwiftLint 规矩列表: realm.github.io/SwiftLint/r…
[2]
SwiftLint 官方文档: github.com/realm/Swift…
这里每天共享一个 iOS 的新知识,快来重视我吧