iOS- 工程配置SwiftLint
阿新 • • 發佈:2018-12-25
Homebrew安裝SwiftLint
brew install swiftlint
在Xcode中新增執行指令碼
在Xcode中選擇Build Phase-Add Build Phase-New Run Script Phase,新增如下指令碼
if which swiftlint >/dev/null; then
swiftlint
else
echo "warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint"
fi
新增配置檔案.swiftlint.yml
1>cd到主工程目錄下,建立檔案
touch .swiftlint.yml
2>開啟檔案(Command+Shift+.可顯示隱藏檔案)並編譯,以下規則篩選過不可用規則
excluded: - Carthage disabled_rules: # - colon # 冒號的使用, swiftlint的這個colon屬性規則很簡單,要求“ :”緊靠所定義的常量或變數等,必須沒有空格,與所指定的型別之間必須只有一個空格,多一個或少一個都不行,如果是用在Dictionary中,則要求緊靠Key,與Value之間必須有且僅有一個空格。這個規則我覺得應該強制推薦使用 - force_cast # 強制轉換, 強制轉換應該被避免,否則直接報 error。 - type_name # 型別名, 型別名應該只包含字母數字字元, 並且以大寫字母開頭,長度在3-40個字元。這個屬性沒什麼好說的,強烈推薦使用。 - function_body_length #函式體長度, 函式體不應該跨越太多行, 超過40行給warning, 超過100行直接報錯。推薦使用。 # - control_statement #控制語句, if、for、while、do語句不應該將 條件 寫在 圓括號 中, 另外注意條件出的空格。 - type_body_length #型別體長度。型別體長度不應該跨越太多行, 超過200行給warning,超過350行給error。一般是大括號或者括號內, 比如定義一個enum或struct。 # - nesting - variable_name # 變數名應該只包含字元數字字元, 並且只能以小寫字母開頭或者應該只包含大寫字母。此外,當變數名被宣告為static(靜態)變數時或者immutable不可變的時候,這時或許可以以一個大寫字母開頭。最後,變數名不應該太長或者太短(應該在3-40個字元間,否則會觸發警告!!!)。注意:目前變數名只適用於自己寫的方法的引數和自己寫的class中的全域性常量或變數, 對於系統自帶的方法裡面和自己寫的方法裡面沒有作用 - line_length # 行的字元長度屬性。這個強烈不推薦使用。官方的規定是超過120字元就給warning, - trailing_whitespace # 尾部空白行強烈不推薦使用 # - todo # TODO 和 FIXME 應該避免使用, 使用“notaTODO 和 notaFIXME”代替。另外, 和 MARK 標記不同的是, “notaTODO 和 notaFIXME”沒有空格要求,但是我建議如果要使用這個 todo 屬性, 儘量寫成和 MARK 一樣的規範。 # - legacy_constructor - valid_docs # 有效檔案 。 檔案宣告應該有效 。這個屬性和屬性62有衝突, 而且重複, 官網文件寫得有問題。另外在swift 3.0上測試並不會發生warning。暫時不舉例,這個屬性禁用!!!後期等官方完善之後再追加。 - missing_docs # 缺失說明註釋, 官方解釋:”Public declarations should be documented.”, 公共宣告應該被註釋/標記。 在函式宣告的時候, 一般情況下, 帶public關鍵字的函式的註釋只能用 “///”和 “/* /”來註釋, 如果不帶public關鍵字的函式只能用 “//”和 “/* */” 。這個屬性應該禁用,沒必要!!! - file_length # 檔案行長度違規:檔案應包含400行或以下 - cyclomatic_complexity # 函式命名的複雜度應該為10或以下,儘量簡單比如引數不要過多,修飾符不要過多不然會報錯 迴圈複雜度。函式體的複雜度應該要限制,這個屬性主要約束條件句、迴圈句中的迴圈巢狀問題, 當巢狀太多的迴圈時,則會觸發swiftlint中的warning和error,當達到10個迴圈巢狀時就會報warning,達到20個迴圈巢狀時就會報error,強烈推薦這個屬性。巢狀太多,可讀性差! - large_tuple # 元組衝突:元組應該最多有2個成員,多餘兩個會報錯 - function_parameter_count # 函式引數計數違例:函式應該有5個引數,多餘會報錯 函式引數個數, 函式引數數量(init方法除外)應該少點, 不要太多,swiftlint規定函式引數數量超過5個給warning, 超過8個直接報error。這個屬性推薦使用, 由於簡單就不舉例了。注:function_parameter_count: error 這樣並不能改變它的警告或錯誤,該屬性不允許修改,但是可以禁用 - multiple_closures_with_trailing_closure # 多個閉包與尾隨閉包衝突:在傳遞多個閉包引數時不應該使用尾隨關閉語法。 identifier_name: excluded: id # 允許命名為id
檔案說明:
- disabled_rules:禁用指定的規則
- opt_in_rules:啟動指定的規則
- whitelist_rules:白名單規則,不能和上面兩項混用
- included:希望Lint檢索的路徑,SwiftLint會掃描該路徑下的所有.swift字尾的檔案
- excluded: 希望不要檢索的路徑,SwiftLint會無視掉該路徑下的檔案,一般比如Pods、Carthage或者一些三方庫
SwiftLint命令列
autocorrect Automatically correct warnings and errors(將已知的能夠自動修復的Error和Warning都自動修復,一般舊的專案配置SwiftLint之後會出現大量的報錯和警告,此命令可減少大部分工作量) generate-docs Generates markdown documentation for all rules help Display general or command-specific help lint Print lint warnings and errors (default command) rules Display the list of rules and their identifiers version Display the current version of SwiftLint
更新SwiftLint
brew upgrade swiftlint