# This SwiftLint file is based on this great guideline. # https://github.com/raywenderlich/swift-style-guide included: - Sources/ZcashLightClientKit/ - Example/ZcashLightClientSample/ZcashLightClientSample - Example/ZcashLightClientSample/ZcashLightClientSampleTests excluded: - xctemplates/ - Sources/ZcashLightClientKit/Modules/Service/GRPC/ProtoBuf/compact_formats.pb.swift - Sources/ZcashLightClientKit/Modules/Service/GRPC/ProtoBuf/service.pb.swift - Sources/ZcashLightClientKit/Modules/Service/GRPC/ProtoBuf/service.grpc.swift - Tests/ - ZcashLightClientKitTests/Constants.generated.swift - build/ - docs/ - Tests/TestUtils/Sourcery/GeneratedMocks/AutoMockable.generated.swift - Sources/ZcashLightClientKit/Error/ZcashError.swift - Sources/ZcashLightClientKit/Error/ZcashErrorCode.swift disabled_rules: - notification_center_detachment - orphaned_doc_comment - todo - unused_capture_list - nesting # allow for types to be nested, common pattern in Swift - multiple_closures_with_trailing_closure - generic_type_name # allow for arbitrarily long generic type names - redundant_void_return - empty_parentheses_with_trailing_closure opt_in_rules: - mark - array_init - attributes - closure_end_indentation - closure_spacing - collection_alignment - colon # promote to error - convenience_type - discouraged_object_literal - empty_collection_literal - empty_count - empty_string - enum_case_associated_values_count - fatal_error_message - first_where - force_unwrapping - implicitly_unwrapped_optional - indentation_width - last_where - legacy_random - literal_expression_end_indentation - multiline_arguments - multiline_arguments_brackets - multiline_function_chains - multiline_literal_brackets - multiline_parameters - multiline_parameters_brackets - no_space_in_method_call - operator_usage_whitespace - overridden_super_call - pattern_matching_keywords - prefer_self_type_over_type_of_self - redundant_nil_coalescing - redundant_type_annotation - return_arrow_whitespace - strict_fileprivate - toggle_bool # - trailing_closure # weird in SwiftUI - unneeded_parentheses_in_closure_argument - vertical_whitespace_closing_braces - vertical_whitespace_opening_braces - weak_delegate - yoda_condition - todos analyzer_rules: - unused_import custom_rules: array_constructor: name: "Array/Dictionary initializer" regex: '[let,var] .+ = (\[.+\]\(\))' capture_group: 1 message: "Use explicit type annotation when initializing empty arrays and dictionaries" severity: warning string_concatenation: included: ".*\\.swift" excluded: ".*Test\\.swift" name: "String Concatenation" regex: " \\+ \"|\" \\+ |\\+= \"" message: "Please use string interpolation instead of concatenation" severity: error print_function_usage: included: ".*\\.swift" excluded: ".*Test\\.swift" name: "Swift print() or debugPrint() should not be used in App Code" regex: "print\\(|debugPrint\\(" message: "The Swift print() or debugPrint() functions should not be used." severity: warning nslog_function_usage: included: ".*\\.swift" excluded: ".*Test\\.swift" name: "Swift NSLog() should not be used in App Code" regex: "NSLog\\(" message: "The swift NSLog function should not be used." severity: error todos: included: ".*\\.swift" name: "TODO" regex: '(TODO|FIXME):\ ([^\[]|\[[^#]|\[#[^1-9])' message: "TODO or FIXME without issue number. Format TODO: [#...]" severity: warning match_kinds: - comment attributes: always_on_same_line: - "@IBSegueAction" - "@IBAction" - "@NSManaged" - "@objc" force_cast: warning force_try: warning function_body_length: warning: 150 legacy_hashing: error identifier_name: excluded: - i - id - x - y - z - to - at - db - ua - nf - tx - as - di indentation_width: indentation_width: 4 include_comments: false line_length: warning: 150 ignores_urls: true ignores_function_declarations: true ignores_comments: true file_length: warning: 600 ignore_comment_only_lines: true multiline_arguments: first_argument_location: next_line only_enforce_after_first_closure_on_first_line: true private_over_fileprivate: validate_extensions: true trailing_whitespace: ignores_empty_lines: true ignores_comments: true vertical_whitespace: max_empty_lines: 1