【iOS開發(fā)】Swift代碼風格檢查庫 —— SwiftLint

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

添加方法如下圖:

xcode添加腳本.png
添加配置文件

在想要執(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、commacolon等等,執(zhí)行swiftlint autocorrect即可。如果不能自動解決的,那么需要自己手動一個個改。

直到disabled_rules列表的所有規(guī)則刪除完后,代碼風格檢查工作也完成了。

更新SwiftLint

如果SwiftLint有新版本,在終端執(zhí)行brew upgrade swiftlint,然后在Build一下,看看項目有哪些代碼風格問題。

如果有問題,歡迎大家留言。同時歡迎真心喜歡Swift的童鞋加入我管理的Swift開發(fā)群:536353151,本群只討論Swift相關內容。謝謝?。壳叭豪锶藬挡欢啵呛牵?/p>

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 隨心自在人生路 心隨自在常自然 自在隨心怎久長 在自隨心不戀凡
    隨心Rider閱讀 286評論 0 0
  • 獲取證書 申請證書https://startssl.com/ 生成開源證書 概述 https默認端口443 htt...
    金色的清晨閱讀 1,100評論 0 0
  • 我有一個漂亮的新朋友,它的名字叫模型飛機。 它身穿藍灰色的外衣,外衣上寫著幾個英文字母,顯得十分霸氣。它...
    60e0a3723a5c閱讀 454評論 0 1
  • 信步徒登峰林近,青松老樹生根。冷風吹月雁紛紛,是時夜五分,寂寞在山門。 此中景色勻人醉,霜江凝夜沉沉。相思難念惹邊...
    迷曳閱讀 280評論 2 6
  • 學習《道德經》重點語句摘抄 第八章 [原文]上善若水①。水善利萬物而不爭,處眾人之所惡②,故幾于道③。居,善地;心...
    D051飛鷹閱讀 227評論 0 0

友情鏈接更多精彩內容