Swift-CodeStyle Checker:SwiftLint
介紹:
SwiftLint 是一個用於強制檢查 Swift 程式碼風格和規定的一個工具,基本上以 GitHub's Swift 程式碼風格指南為基礎。
SwiftLint官網:
Github地址
SwiftLint中文部落格(推薦):
Xcode程式碼規範之SwiftLint配置
Swift程式碼規範:
Github 公佈的 Swift 程式碼規範
Swift Version Support
這裡有一份 SwiftLint 版本和對應該 Swift 版本的對照表作為參考。
Swift 版本 | 最後一個 SwiftLint 支援版本 |
---|---|
Swift 1.x | SwiftLint 0.1.2 |
Swift 2.x | SwiftLint 0.18.1 |
Swift 3.x | SwiftLint 0.25.1 |
Swift 4.0-4.1.x | SwiftLint 0.28.2 |
Swift 4.2.x-5.0 | 最新的 |
安裝
使用 Homebrew:
brew install swiftlint
XCode配置
安裝完成後,需要在Xcode中配置相關設定,才能使 SwiftLint 在 Xcode 中自動檢測程式碼規範。配置也很簡單,只需要在 Xcode 的 Build Phases 中新建一個 Run Script Phase 配置項,在裡面新增相關程式碼後,編譯即可!
if which swiftlint >/dev/null; then
swiftlint
else
echo "warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint"
fi
多Xcode配置
如果有多個Xcode在同時使用,需要切換xcode的配置環境:
//切換到預設Xcode版本
sudo xcode-select -s '/Applications/Xcode.app/Contents/Developer'
//切換到其他Xcode版本
sudo xcode-select -s '/Applications/Xcode 10.1.app/Contents/Developer’
到這一步基本完成安裝和基礎的操作,正常執行Xcode即可獲得CodeStyle的檢查結果
自定義配置
除了通用的功能,我們還經常要做一些額外的事情,比如:去掉第三方庫的檢查、去掉或改變一些檢查規則等
新建自定義配置檔案
開啟終端, cd 到專案根目錄下
輸入: touch .swiftlint.yml
可以自定義的常用配置:
disabled_rules: # 禁用指定的規則
- colon
- comma
- control_statement
opt_in_rules: # 啟用指定的規則
- empty_count
- missing_docs
# 可以通過執行如下指令來查詢所有可用的規則:
# swiftlint rules
included: # 執行 linting 時包含的路徑。如果出現這個 `--path` 會被忽略。
- Source
excluded: # 執行 linting 時忽略的路徑。 優先順序比 `included` 更高。
- Carthage
- Pods
- Source/ExcludedFolder
- Source/ExcludedFile.swift
忽略引入的第三方庫
在.swiftlint.yml檔案中輸入
excluded:
- Pods
常用的規則修改項(簡單模板)
在.swiftlint.yml檔案中輸入
excluded: # 執行 linting 時忽略的路徑。 優先順序比 `included` 更高。
- Pods
disabled_rules: # 執行時排除掉的規則
- identifier_name # 命名規則必須按照駝峰原則,與後臺傳的Json欄位命名衝突,建議排除掉
- trailing_whitespace # 每一個空行不能有空格,會與Xcode換行後自動對齊生成的空格衝突,建議排除掉
force_cast: warning # 型別判斷
force_try: warning # try語句判斷
cyclomatic_complexity: 20 #程式碼複雜度,預設為10
line_length: # 單行程式碼長度,預設error 120
warning: 120
error: 200
file_length: # 檔案長度
warning: 500
error: 1200
function_body_length: # 函式體長度
warning: 100
error: 300
這是一個基礎版本,隨著專案的開展,可分階段將規則逐漸嚴格起來