SwiftLint 規則

| identifier                              | opt-in | correctable | enabled in your config
----------------------+

| 以下是可選規則, 需要額外添加

| attributes                              | yes    | no          | no    Attributes 針對類和func重啓一行, 針對變量在同一行
| closure_end_indentation                 | yes    | no          | no    閉包的 } 與 { 所在行的縮進要相同
| closure_spacing                         | yes    | no          | no    閉包應該與括號有間隔                
| conditional_returns_on_newline          | yes    | no          | no    條件判斷語句需要重啓一行 return                
| empty_count                             | yes    | no          | no    容器 使用 isEmpty 代替 count 判斷是否爲空               
| explicit_type_interface                 | yes    | no          | no    需要跑明確參數的類型定義                
| fatal_error_message                     | yes    | no          | no    fatalError 必須擁有一個 message                 
| file_header                             | yes    | no          | no    file header 的限制
| first_where                             | yes    | no          | no    使用 `.first(where:)` 代替 `.filter { }.first`
| force_unwrapping                       a | yes    | no          | no    避免強制解包
| implicitly_unwrapped_optional           | yes    | no          | no    避免隱式解包(定義 ! 類型)                 
| valid_docs                              | yes    | no          | no    文檔聲明應該是正確有效的
| missing_docs                            | yes    | no          | no    避免遺失文檔                 
| sorted_imports                          | yes    | no          | no    引用需要按照字母排序                 
| switch_case_on_newline                  | yes    | no          | no    switch 的 case 需要新啓一行              
| object_literal                          | yes    | no          | no    避免 image and color 使用字面量初始化, 需要把相關圖片名,顏色RGB 等參數定義爲 enum struct 或者常量                          
| overridden_super_call                   | yes    | no          | no    override 方法需要調用 super method                 
| private_outlet                          | yes    | no          | no    IBOutlets 應該設置爲 private, 來避免泄露
| prohibited_super_call                   | yes    | no          | no    某些特殊的 override 方法, 禁止調用 super method                 
| redundant_nil_coalescing                | yes    | yes         | no    避免使用 `object ?? nil` 
| explicit_init                           | yes    | yes         | no    避免直接調用 init 方法
| operator_usage_whitespace               | yes    | yes         | no    操作符需要使用一個空格間隔
| nimble_operator                         | yes    | yes         | no    避免 expect 一個確定的判斷                 
| number_separator                        | yes    | yes         | no    使用 _ 分割大數, 讓數字更清晰    

| 以下是默認規則             
| empty_parameters                        | no     | yes         | yes   使用 `() -> ` 代替 `Void ->                 
| empty_parentheses_with_trailing_closure | no     | yes         | yes   尾閉包避免空參數括號             
| colon                                   | no     | yes         | yes   冒號左邊沒有空格, 右邊有空格                 
| comma                                   | no     | yes         | yes   逗號左邊沒有空格, 右邊有空格   
| leading_whitespace                      | no     | yes         | yes   文件末尾不應該存在空格符                 
| legacy_cggeometry_functions             | no     | yes         | yes   避免使用 C 風格 的 CG 遺留函數, 使用 struct extension                
| legacy_constant                         | no     | yes         | yes   避免使用 遺留的全局常量, 使用 struct 內定義的 常量                 
| legacy_constructor                      | no     | yes         | yes   使用 swift 提供的 struct 構造函數, 避免使用 遺留的構造函數 比如 CGPointMake(10, 10)                
| legacy_nsgeometry_functions             | no     | yes         | yes   避免使用 C 風格 的 NS 遺留函數, 使用 struct extension   
| mark                                    | no     | yes         | yes   正確使用 mark 的格式 `// MARK: - message`                 
| opening_brace                           | no     | yes         | yes   需要正確書寫大括號格式                 
| redundant_discardable_let               | no     | yes         | yes   使用 `_ = foo()` 代替 `let _ = foo()`                 
| redundant_optional_initialization       | no     | yes         | yes   不需要寫默認值爲 nil   
| closing_brace                           | no     | yes         | yes   小括號內包含函數(大括號)的時候,之間沒有空格                 
| redundant_void_return                   | no     | yes         | yes   在不必要的時候, 不需要寫 ->() and -> Void                 
| return_arrow_whitespace                 | no     | yes         | yes   函數定義返回的 ->  前後有空格, 不換行 
| statement_position                      | no     | yes         | yes   else and catch 應該與 } 在同一行, 以空格間隔
| trailing_newline                        | no     | yes         | yes   文件末尾應該有一個空行
| trailing_semicolon                      | no     | yes         | yes   行末尾不加分號
| trailing_whitespace                     | no     | yes         | yes   行末尾不加空格
| unused_closure_parameter                | no     | yes         | yes   函數的參數必須被使用
| vertical_whitespace                     | no     | yes         | yes   不能有連續多個空行
| void_return                             | no     | yes         | yes   使用 `-> Void` 代替 `-> ()

| class_delegate_protocol                 | no     | no          | yes   delegate protocol 應該被設定爲 class-only                 
| closure_parameter_position              | no     | no          | yes   閉包的參數應該和 { 在同一行                           
| compiler_protocol_init                  | no     | no          | yes   不應該直接調用字面量轉換的初始化方法                  
| control_statement                       | no     | no          | yes   if while 等判斷條件不要用括號 括起來                 
| custom_rules                            | no     | no          | yes   一些自定義規則                 
| cyclomatic_complexity                   | no     | no          | yes   不應該存在太複雜的函數(判斷語句過多)                 
| discarded_notification_center_observer  | no     | no          | yes   當使用 block 註冊通知中心 observer 的時候, 應該存儲函數返回的 observer, 以便之後的刪除
| file_length                             | no     | no          | yes   文件長度限制                 
| for_where                               | no     | no          | yes   使用 `for where` 代替 簡單的 `for { if }`                 
| force_cast                              | no     | no          | yes   避免強制的類型轉化                 
| force_try                               | no     | no          | yes   避免 `try!`                 
| function_body_length                    | no     | no          | yes   body 長度限制                 
| function_parameter_count                | no     | no          | yes   函數參數數目限制                 
| generic_type_name                       | no     | no          | yes   類型命名規則限制                
| identifier_name                         | no     | no          | yes   參數變量命名規則                 
| implicit_getter                         | no     | no          | yes   read-only 參數不應該有 getter                  
| large_tuple                             | no     | no          | yes   tuple 不應該包括太多參數                 
| line_length                             | no     | no          | yes   行長度限制                 
| nesting                                 | no     | no          | yes   類型定義嵌套不要超過1層 , 聲明嵌套不要超過5層                
| notification_center_detachment          | no     | no          | yes   `NotificationCenter.default.removeObserver` 只在 `deinit` 中被調用                         
| operator_whitespace                     | no     | no          | yes   定義操作符的時候 操作符左右應該各有一個空格                                 
| private_unit_test                       | no     | no          | yes   單元測試方法 不能設置爲 private                             
| redundant_string_enum_value             | no     | no          | yes   字符串類型枚舉, 會有默認 string 值,與名字相同, 不要再次設置                               
| shorthand_operator                      | no     | no          | yes   使用 +=, -=, *=, /=                 
| syntactic_sugar                         | no     | no          | yes   要使用 [] ? 等數組字典可選項的語法糖
| todo                                    | no     | no          | yes   避免 TODOs and FIXMEs 標識
| trailing_comma                          | no     | no          | yes   數組末尾不要加括號
| type_body_length                        | no     | no          | yes   類型體行數限制
| type_name                               | no     | no          | yes   類型名字限制規則
| unused_enumerated                       | no     | no          | yes   當參數沒有被全部使用的時候, 不要使用容器的 enumerated 方法
| unused_optional_binding                 | no     | no          | yes   必須使用定義的 optional binding
| valid_ibinspectable                     | no     | no          | yes   IBInspectable 必須是可變參數
| vertical_parameter_alignment            | no     | no          | yes   函數參數分爲多行書寫的時候, 頭部(小括號後面一位)必須對其
| weak_delegate                           | no     | no          | yes   delegate 應該被設置爲 weak

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章