ZcashLightClientKit/.swiftlint.yml

181 lines
4.4 KiB
YAML

# 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