# Opt-In Rules opt_in_rules: - anonymous_argument_in_multiline_closure - array_init - attributes - closure_end_indentation - closure_spacing - collection_alignment - comma_inheritance - conditional_returns_on_newline - contains_over_filter_count - contains_over_filter_is_empty - contains_over_first_not_nil - contains_over_range_nil_comparison - convenience_type - discouraged_none_name - discouraged_object_literal - empty_collection_literal - empty_count - empty_string - enum_case_associated_values_count - explicit_init - fallthrough - file_header - file_name - file_name_no_space - first_where - flatmap_over_map_reduce - force_unwrapping - function_default_parameter_at_end - identical_operands - implicit_return - implicitly_unwrapped_optional - joined_default_parameter - last_where - legacy_multiple - let_var_whitespace - literal_expression_end_indentation - local_doc_comment - lower_acl_than_parent - missing_docs - modifier_order - multiline_arguments - multiline_arguments_brackets - multiline_function_chains - multiline_literal_brackets - multiline_parameters - multiline_parameters_brackets - no_extension_access_modifier - no_grouping_extension - number_separator - operator_usage_whitespace - optional_enum_case_matching - prefer_self_in_static_references - prefer_self_type_over_type_of_self - prefer_zero_over_explicit_init - prohibited_interface_builder - redundant_nil_coalescing - redundant_type_annotation - return_value_from_void_function - shorthand_optional_binding - sorted_first_last - sorted_imports - static_operator - strict_fileprivate - switch_case_on_newline - toggle_bool - trailing_closure - type_contents_order - unneeded_parentheses_in_closure_argument - yoda_condition # Disabled Rules disabled_rules: - block_based_kvo - class_delegate_protocol - dynamic_inline - is_disjoint - no_fallthrough_only - notification_center_detachment - ns_number_init_as_function_reference - nsobject_prefer_isequal - private_over_fileprivate - redundant_objc_attribute - self_in_property_initialization - todo - unavailable_condition - valid_ibinspectable - xctfail_message # Custom Rules custom_rules: fatal_error: name: 'Fatal Error' regex: 'fatalError.*\(.*\)' message: 'Fatal error should not be used.' severity: error enum_case_parameter: name: 'Enum Case Parameter' regex: 'case [a-zA-Z0-9]*\([a-zA-Z0-9\.<>?,\n\t =]+\)' message: 'The associated values of an enum case should have parameters.' severity: warning tab: name: 'Whitespaces Instead of Tab' regex: '\t' message: 'Spaces should be used instead of tabs.' severity: warning # Thanks to the creator of the SwiftLint rule # "empty_first_line" # https://github.com/coteditor/CotEditor/blob/main/.swiftlint.yml # in the GitHub repository # "CotEditor" # https://github.com/coteditor/CotEditor empty_first_line: name: 'Empty First Line' regex: '(^[ a-zA-Z ]*(?:protocol|extension|class|struct) (?!(?:var|let))[ a-zA-Z:]*\{\n *\S+)' message: 'There should be an empty line after a declaration' severity: error # Analyzer Rules analyzer_rules: - unused_declaration - unused_import # Options file_header: required_pattern: '(// swift-tools-version: .+)?//\n// .*.swift\n// WinUI\n//\n// Created by .* on .*\.(\n// Edited by (.*,)+\.)*\n(\n// Thanks to .* for the .*:\n// ".*"\n// https://.* \(\d\d.\d\d.\d\d\))*//\n' missing_docs: warning: [internal, private] error: [open, public] excludes_extensions: true excludes_inherited_types: false type_contents_order: order: - case - type_alias - associated_type - type_property - instance_property - ib_inspectable - ib_outlet - subscript - initializer - deinitializer - subtype - type_method - view_life_cycle_method - ib_action - other_method excluded: - .build/