SwiftLint
一直以來,我都非常注重代碼的風格,例如變量和方法的命名、是否需要空白行、如果讓代碼更加簡短并且保持高可讀性等等,有時候我會對一個變量或者方法名糾結好久,就是為了找到一個更清晰易懂的名字。
SwiftLint是一個檢查Swift代碼風格的第三方庫,他可以讓我們在編寫代碼的時候減少不必要的錯誤和冗余代碼,并且使代碼更加清晰易懂。盡早養(yǎng)成一個良好的編程習慣非常重要。
大家可以先看看有哪些良好的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
添加方法如下圖:

添加配置文件
在想要執(zhí)行代碼風格檢查的文件夾新建一個名為.swiftlint.yml的文件(注意不要漏了前面的點),我們可以在這個文件添加一些自定義的規(guī)則:
-
disabled_rules:從默認的可用規(guī)則集合中,禁用規(guī)則 -
opt_in_rules:激活不在默認的可用規(guī)則集合的規(guī)則 -
whitelist_rules:白名單規(guī)則,只有在這個列表的規(guī)則才會被激活,在這個列表激活的規(guī)則不能出現在disabled_rules或者opt_in_rules。
下面是自定義配置文件的示例:
disabled_rules: # 禁用規(guī)則
- colon
- comma
- control_statement
opt_in_rules: # 可選規(guī)則
- empty_count
- missing_docs
# 執(zhí)行這個命令可以查看所有規(guī)則: swiftlint rules
included: # 指定需要進行風格檢查的路徑
- Source
excluded: # 指定不需要進行風格檢查的路徑,優(yōu)先于included
- Carthage
- Pods
- Source/ExcludedFolder
- Source/ExcludedFile.swift
# 自定義某個規(guī)則
force_cast: warning # 隱式地
force_try:
severity: warning # 顯式地
# 有warning和error的規(guī)則,可以僅僅設置warning
# 隱式地
line_length: 110
# 使用一個數組隱式地設置
type_body_length:
- 300 # warning
- 400 # error
# 或者顯式地設置
file_length:
warning: 500
error: 1200
# 命名規(guī)則可以為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 查看所有規(guī)則
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
在剛開始時,我們先把所有想要檢查的規(guī)則放到disabled_rules,然后每次刪除一個規(guī)則,刪除后記得保存。刪除一個規(guī)則后,在終端執(zhí)行swiftlint,就能看到有多少個warning和error,例如這個執(zhí)行結果有36個warnings和5個errors:Done linting! Found 36 violations, 5 serious in 55 files.
某些規(guī)則的warning可以讓swiftlint自動幫我們解決,例如trailing_newline、comma和colon等等,執(zhí)行swiftlint autocorrect即可。如果不能自動解決的,那么需要自己手動一個個改。
直到disabled_rules列表的所有規(guī)則刪除完后,代碼風格檢查工作也完成了。
更新SwiftLint
如果SwiftLint有新版本,在終端執(zhí)行brew upgrade swiftlint,然后在Build一下,看看項目有哪些代碼風格問題。
完
如果有問題,歡迎大家留言。同時歡迎真心喜歡Swift的童鞋加入我管理的Swift開發(fā)群:536353151,本群只討論Swift相關內容。謝謝?。壳叭豪锶藬挡欢啵呛牵?/p>