# All rules here : https://realm.github.io/SwiftLint/rule-directory.html analyzer_rules: - capture_variable - typesafe_array_init - unused_declaration - unused_import included: - Sources ## Rules configuration attributes: always_on_line_above: ["@InjectedValue", "@ViewBuilder", "@IBOutlet"] always_on_same_line: ["@Environment", "@EnvironmentObject", "@StateObject", "@State"] identifier_name: min_length: - 2 max_length: - 60 excluded: - x - y type_name: min_length: 3 max_length: 60 excluded: - T allowed_symbols: - _ # line_length: # warning: 150 disabled_rules: - blanket_disable_command # do not warn when rule is not re-enable later in the file - type_contents_order - legacy_objc_type - indentation_width - function_parameter_count - line_length - function_body_length - cyclomatic_complexity - optional_data_string_conversion opt_in_rules: # Default rules : - block_based_kvo - class_delegate_protocol - closing_brace - closure_parameter_position - colon - comma - comment_spacing - compiler_protocol_init - computed_accessors_order - control_statement - custom_rules # - cyclomatic_complexity - deployment_target - discouraged_direct_init - duplicate_enum_cases - duplicate_imports - duplicated_key_in_dictionary_literal - dynamic_inline - empty_enum_arguments - empty_parameters - empty_parentheses_with_trailing_closure - file_length - for_where - force_unwrapping - force_cast - force_try - trailing_whitespace # - function_body_length # - function_parameter_count - generic_type_name - identifier_name - implicit_getter - inclusive_language - is_disjoint - large_tuple - leading_whitespace - legacy_cggeometry_functions - legacy_constant - legacy_constructor - legacy_hashing - legacy_nsgeometry_functions - legacy_random # - line_length - mark - multiple_closures_with_trailing_closure - nesting - no_fallthrough_only - no_space_in_method_call - notification_center_detachment - ns_number_init_as_function_reference - nsobject_prefer_isequal - opening_brace - operator_whitespace - orphaned_doc_comment - private_over_fileprivate - private_unit_test - protocol_property_accessors_order - reduce_boolean - redundant_discardable_let - redundant_objc_attribute - redundant_optional_initialization - redundant_set_access_control - redundant_string_enum_value - redundant_void_return - return_arrow_whitespace - self_in_property_initialization - shorthand_operator - statement_position - superfluous_disable_command - switch_case_alignment - syntactic_sugar - todo - trailing_comma - trailing_newline - trailing_semicolon - type_body_length - type_name - unavailable_condition - unneeded_break_in_switch - unused_closure_parameter - unused_control_flow_label - unused_enumerated - unused_optional_binding - unused_setter_value - valid_ibinspectable - vertical_parameter_alignment - vertical_whitespace - void_function_in_ternary - void_return - xctfail_message - accessibility_trait_for_button - array_init - attributes - closure_body_length - closure_end_indentation - closure_spacing - collection_alignment - comma_inheritance - contains_over_filter_count - contains_over_filter_is_empty - contains_over_first_not_nil - contains_over_range_nil_comparison - convenience_type - discarded_notification_center_observer - discouraged_assert - empty_count - empty_string - empty_xctest_method - enum_case_associated_values_count - explicit_init - fallthrough - fatal_error_message - file_header - first_where - flatmap_over_map_reduce - ibinspectable_in_extension - implicit_return - implicitly_unwrapped_optional - joined_default_parameter - last_where - legacy_multiple - let_var_whitespace - literal_expression_end_indentation - lower_acl_than_parent # - missing_docs - modifier_order - multiline_arguments - multiline_arguments_brackets - multiline_function_chains - multiline_literal_brackets - multiline_parameters - multiline_parameters_brackets - nimble_operator - no_extension_access_modifier - no_grouping_extension - nslocalizedstring_key - nslocalizedstring_require_bundle - number_separator - operator_usage_whitespace - optional_enum_case_matching - overridden_super_call - override_in_extension - pattern_matching_keywords - prefer_self_in_static_references - prefer_self_type_over_type_of_self - prefer_zero_over_explicit_init - prefixed_toplevel_constant - private_action - private_outlet - prohibited_interface_builder - prohibited_super_call - quick_discouraged_call - quick_discouraged_focused_test - quick_discouraged_pending_test - redundant_nil_coalescing - redundant_type_annotation - required_enum_case - return_value_from_void_function - self_binding - shorthand_optional_binding - single_test_class - sorted_first_last - sorted_imports - strong_iboutlet - test_case_accessibility - toggle_bool - trailing_closure - unavailable_function - unneeded_parentheses_in_closure_argument - unowned_variable_capture - untyped_error_in_catch - vertical_parameter_alignment_on_call - vertical_whitespace_between_cases - vertical_whitespace_closing_braces - weak_delegate - xct_specific_matcher custom_rules: # Empty line before and after MARK ------------------------------------------- # mark_spacing: # name: "Surround MARK by empty lines" # regex: '\n[^\n]([^\n]*\/\/ MARK[^\n]*)\n[^\n]' # message: "Surround MARK by empty lines" # severity: warning # Empty line ----------------------------------------------------------------- # no_empty_line_after_func: # name: "No empty line after init or func" # regex: '(func|init|let\s|var\s)[^\n]*\{[^\n\{\}]*\n\n' # message: "No empty line after init or func" # severity: warning # Empty line after canImport ----------------------------------------------------------------- no_empty_line_after_can_import: name: "Add empty line after #if canImport" regex: '#if canImport\(.*\)\n[^\n]*(import|class|struct|enum|extension|protocol)' message: "Add empty line after #if canImport" severity: warning # Spacings ------------------------------------------------------------------- empty_line_required: name: "Add empty line after class, struct, enum, extension or protocol" regex: '(class |struct |enum |extension |protocol )[^\n]*\{\n[^\n]*(class|struct|enum|extension|protocol|func|let|var|weak|private|internal|public|open|static|final|\/\/|init|case|@)' message: "Add empty line after class, struct, enum, extension or protocol" severity: warning match_kinds: - argument - attribute.builtin - attribute.id - buildconfig.id - buildconfig.keyword - comment - comment.mark - comment.url - identifier - keyword - number - objectliteral - parameter - placeholder - string - string_interpolation_anchor - typeidentifier