XYOracleNetwork/sdk-xyo-client-swift

View on GitHub
.swiftlint.yml

Summary

Maintainability
Test Coverage
disabled_rules: # rule identifiers to exclude from running

  # Rationale: Xcode auto indentation can cause this warning
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#closure-end-indentation
  - closure_end_indentation

  # Rationale: Arbitrary restriction
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#cyclomatic-complexity
  - cyclomatic_complexity

  # Rationale: Arbitrary restriction
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#discouraged-object-literal
  - discouraged_object_literal

  # Rationale: Current implementation triggers on system APIs. Disabling until rule is configurable to fix this. An optional collection can have two "empty" states: nil and empty. If nil and empty are to mean different things, consider modeling it differently using an enum with associated values.
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#discouraged-optional-collection
  - discouraged_optional_collection

  # Rationale: Doesn't really add any clarity
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#explicit-acl
  - explicit_acl

  # Rationale: Heavy handed in telling someone how to code
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#explicit-enum-raw-value
  - explicit_enum_raw_value

  # Rationale: Doesn't really add any clarity
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#explicit-top-level-acl
  - explicit_top_level_acl

  # Rationale: We don't want to fight the language
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#explicit-type-interface
  - explicit_type_interface

  # Rationale: Unclear on what it enforces
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#extension-access-modifier
  - extension_access_modifier

  # Rationale: Arbitrary restriction
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#file-line-length
  - file_length

  # Rationale: Arbitrary restriction
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#function-body-length
  - function_body_length

  # Rationale: Arbitrary restriction
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#function-parameter-count
  - function_parameter_count

  # Rationale: Arbitrary restriction
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#generic-type-name
  - generic_type_name

  # Rationale: Arbitrary restriction
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#identifier-name
  - identifier_name

  # Rationale: False positives
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#implicit-getter
  - implicit_getter

  # Rationale: Being concise and not fighting the language. We allow engineers to decide when and how to use implicit returns based on their best judgement.
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#implicit-return
  - implicit_return

  # Rationale: Arbitrary restriction
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#large-tuple
  - large_tuple

  # Rationale: Arbitrary restriction
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#variable-declaration-whitespace
  - let_var_whitespace

  # Rationale: Arbitrary restriction
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#line-length
  - line_length

  # Rationale: Xcode auto indentation can cause this warning
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#literal-expression-end-indentation
  - literal_expression_end_indentation

  # Rationale: Functions with parameters followed by multiple closures trigger this warning when placed on separate lines. The default Xcode formatting for this behavior is inconsistent, and auto indentation is poor.
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#multiline-arguments
  - multiline_arguments

  # Rationale: Functions with closures followed by a parenthesis trigger this warning.
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#multiline-arguments-brackets
  - multiline_arguments_brackets

  # Rationale: Arbitrary restriction.
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#multiline-literal-brackets
  - multiline_literal_brackets

  # Rationale: Arbitrary restriction.
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#multiline-parameters-brackets
  - multiline_parameters_brackets

  # Rationale: Arbitrary restriction
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#nesting
  - nesting

  # Rationale: We don't use nimble
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#nimble-operator
  - nimble_operator

  # Rationale: Protocol conformance can require public declaration
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#no-extension-access-modifier
  - no_extension_access_modifier

  # Rationale: Heavy handed in telling someone how to program a specific way
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#no-grouping-extension
  - no_grouping_extension

  # Rationale: Unintuitive
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#number-separator
  - number_separator

  # Rationale: Doesn't really add anything other than telling someone how to code
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#object-literal
  - object_literal

  # Rationale: Old outdated convention
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#prefixed-top-level-constant
  - prefixed_toplevel_constant

  # Rationale: We don't use Quick
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#quick-discouraged-call
  - quick_discouraged_call

  # Rationale: We don't use Quick
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#quick-discouraged-focused-test
  - quick_discouraged_focused_test

  # Rationale: We don't use Quick
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#quick-discouraged-pending-test
  - quick_discouraged_pending_test

  # Rationale: Only should be enabled when the API uses snake case.
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#raw_value_for_camel_cased_codable_enum
  - raw_value_for_camel_cased_codable_enum

  # Rationale: There are cases where you may want to declare the string enum value explicitly
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#redundant-string-enum-value
  - redundant_string_enum_value

  # Rationale: Do not require a deinit function, as it is not always necessary.
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#required-deinit
  - required_deinit

  # Rationale: Provides no value
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#sorted-imports
  - sorted_imports

  # Rationale: Usage of proper access level
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#strict-fileprivate
  - strict_fileprivate

  # Rationale: Doesn't really add anything other than telling someone how to code
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#switch-case-on-newline
  - switch_case_on_newline

  # Rationale: Naming the parameters can be important for clarity in some instances
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#trailing-closure
  - trailing_closure

  # Rationale: Xcode auto indentation can cause this warning
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#trailing-whitespace
  - trailing_whitespace

  # Rationale: Arbitrary restriction
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#type-body-length
  - type_body_length

  # Rationale: Arbitrary restriction
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#type-name
  - type_name

  # Rationale: For typed parameters in closures, parentheses are required by swift, making this rule inherently inconsistent.
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#unneeded-parentheses-in-closure-argument
  - unneeded_parentheses_in_closure_argument

  # Rationale: Custom rule overrides to allow todos when issue links are provided.
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#todo
  - todo

  # Rationale: Allows for more readable code when defining new properties or functions on types.
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#vertical-whitespace-after-opening-braces
  - vertical_whitespace_opening_braces

  # Rationale: Unnecessary whitespace.
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#vertical-whitespace-between-cases
  - vertical_whitespace_between_cases

  # Rationale: Allow using XCTest functions as defined by the framework.
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#xctest-specific-matcher
  - xct_specific_matcher

  # Rationale: Arbitrary restriction. The default bundle will be suitable for most projects.
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#nslocalizedstring-require-bundle
  - nslocalizedstring_require_bundle

  # Rationale: The current rule set does not allow for enforcement of our preferred ordering (namely, private classes at the bottom of the file).
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#file-types-order
  - file_types_order

  # Rationale: The benefit of this rule is a minor performance improvement, at the potential cost of legibility. Leave up to the developer's discrection.
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#reduce-into
  - reduce_into

opt_in_rules: # some rules are only opt-in

  # Rationale: When using map, we think of it being used to transform a current array into something else
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#array-init
  - array_init

  # Rationale: Provides consistency in coding style
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#attributes
  - attributes

  # Rationale: Provides consistency in coding style and follows modern practices of the language
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#block-based-kvo
  - block_based_kvo

  # Rationale: Prevents retain cycles
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#class-delegate-protocol
  - class_delegate_protocol

  # Rationale: Provides consistency in coding style
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#closing-brace-spacing
  - closing_brace

  # Rationale: Provides consistency in coding style
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#closure-parameter-position
  - closure_parameter_position

  # Rationale: Provides consistency in coding style
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#closure-spacing
  - closure_spacing

  # Rationale: Provides consistency in coding style
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#colon
  - colon

  # Rationale: Provides consistency in coding style
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#comma-spacing
  - comma

  # Rationale: Provides consistency in coding style
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#compiler-protocol-init
  - compiler_protocol_init

  # Rationale: Encourages usage of assertion failures and thinking about what you are returning
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#conditional-returns-on-newline
  - conditional_returns_on_newline

  # Rationale: A more clear and consise way to check if something exists
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#contains_over_filter_count
  - contains_over_filter_count

  # Rationale: A more clear and consise way to check if something exists
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#contains_over_filter_is_empty
  - contains_over_filter_is_empty

  # Rationale: A more clear and consise way to check if something exists
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#contains-over-first-not-nil
  - contains_over_first_not_nil

  # Rationale: A more clear and consise way to check if a range exists
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#contains_over_range_nil_comparison
  - contains_over_range_nil_comparison

  # Rationale: Provides consistency in coding style and follows modern practices of the language
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#control-statement
  - control_statement

  # Rationale: Encourages proper memory practices
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#discarded-notification-center-observer
  - discarded_notification_center_observer

  # Rationale: Prevents coder error
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#discouraged-direct-initialization
  - discouraged_direct_init

  # Rationale: A nil bool is a tri-state variable which can be modeled more clearly
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#discouraged-optional-boolean
  - discouraged_optional_boolean

  # Rationale: Imports are not required more than once.
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#duplicate-imports
  - duplicate_imports

  # Rationale: Prevents coder error
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#dynamic-inline
  - dynamic_inline

  # Rationale: Provides consistency in coding style
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#empty_collection_literal
  - empty_collection_literal

  # Rationale: Provides consistency in coding style and follows modern practices of the language
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#empty-count
  - empty_count

  # Rationale: Provides consistency in coding style and brevity.
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#empty-enum-arguments
  - empty_enum_arguments

  # Rationale: Provides consistency in coding style and follows modern practices of the language
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#empty-parameters
  - empty_parameters

  # Rationale: Provides consistency in coding style
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#empty-parentheses-with-trailing-closure
  - empty_parentheses_with_trailing_closure

  # Rationale: Provides consistency in coding style and follows modern practices of the language
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#empty-string
  - empty_string

  # Rationale: Provides consistency in coding style
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#explicit-init
  - explicit_init

  # Rationale: Prevents coder error
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#fallthrough
  - fallthrough

  # Rationale: Encourages better documentation
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#fatal-error-message
  - fatal_error_message

  # Rationale: Provides consistency
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#file-header
  - file_header

  # Rationale: Encourages using the right API to solve a problem
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#first-where
  - first_where

  # Rationale: Provides consistency in coding style
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#flatmap_over_map_reduce
  - flatmap_over_map_reduce

  # Rationale: Encourages using the right API to solve a problem
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#for-where
  - for_where

  # Rationale: Prevents coder error, doesn't crash, makes coder be explicit about their assumptions
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#force-cast
  - force_cast

  # Rationale: Prevents coder error, doesn't crash, makes coder be explicit about their assumptions
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#force-try
  - force_try

  # Rationale: Prevents coder error, doesn't crash, makes coder be explicit about their assumptions
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#force-unwrapping
  - force_unwrapping

  # Rationale: Prevents coder error, doesn't crash, makes coder be explicit about their assumptions
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#implicitly-unwrapped-optional
  - implicitly_unwrapped_optional

  # Rationale: Encourages using the right API to solve a problem
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#is-disjoint
  - is_disjoint

  # Rationale: Provides clarity and consistency by using the default parameter
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#joined-default-parameter
  - joined_default_parameter

  # Rationale: Provides consistency in coding style
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#last-where
  - last_where

  # Rationale: Provides consistency in coding style
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#leading-whitespace
  - leading_whitespace

  # Rationale: Provides consistency in coding style and follows modern practices of the language
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#legacy-cggeometry-functions
  - legacy_cggeometry_functions

  # Rationale: Provides consistency in coding style and follows modern practices of the language
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#legacy-constant
  - legacy_constant

  # Rationale: Provides consistency in coding style and follows modern practices of the language
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#legacy-constructor
  - legacy_constructor

  # Rationale: Provides consistency in coding style and follows modern practices of the language
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#legacy-hashing
  - legacy_hashing

  # Rationale: Provides consistency in coding style and follows modern practices of the language
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#legacy-nsgeometry-functions
  - legacy_nsgeometry_functions

  # Rationale: Usage of proper access level
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#lower-acl-than-parent
  - lower_acl_than_parent

  # Rationale: Provides consistency in coding style
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#mark
  - mark

  # Rationale: Provides consistency in coding style
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#multiline-parameters
  - multiline_parameters

  # Rationale: Clarity of code
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#multiple-closures-with-trailing-closure
  - multiple_closures_with_trailing_closure

  # Rationale: Provides consistency in coding style
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#no_space_in_method_call
  - no_space_in_method_call

  # Rationale: Encourages coder best practices though language feature likely makes this obsolete
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#multiple-closures-with-trailing-closure
  - notification_center_detachment

  # Rationale: Provides consistency in coding style
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#opening-brace-spacing
  - opening_brace

  # Rationale: Provides consistency in coding style
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#operator-usage-whitespace
  - operator_usage_whitespace

  # Rationale: Provides consistency in coding style
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#operator-function-whitespace
  - operator_whitespace

  # Rationale: Prevents coder error
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#overridden-methods-call-super
  - overridden_super_call

  # Rationale: Prevents unpredictable behavior
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#override-in-extension
  - override_in_extension

  # Rationale: Promotes consistency and reduces duplication.
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#pattern-matching-keywords
  - pattern_matching_keywords

  # Rationale: UI elements should only be configurable by their owners and not be exposed to others
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#private-actions
  - private_action

  # Rationale: UI elements should only be configurable by their owners and not be exposed to others
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#private-outlets
  - private_outlet

  # Rationale: Keep internal details from being overexposed
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#private-over-fileprivate
  - private_over_fileprivate

  # Rationale: Prevents coder error
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#private-unit-test
  - private_unit_test

  # Rationale: Prevents coder error
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#prohibited-calls-to-super
  - prohibited_super_call

  # Rationale: Provides consistency in coding style
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#protocol-property-accessors-order
  - protocol_property_accessors_order

  # Rationale: Provides consistency in coding style and brevity
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#redundant-discardable-let
  - redundant_discardable_let

  # Rationale: Provides consistency in coding style and brevity
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#redundant-nil-coalescing
  - redundant_nil_coalescing

  # Rationale: Provides consistency in coding style and brevity
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#redundant-objc-attribute
  - redundant_objc_attribute

  # Rationale: Provides consistency in coding style and brevity
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#redundant-optional-initialization
  - redundant_optional_initialization

  # Rationale: Provides consistency in coding style and brevity
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#redundant-void-return
  - redundant_void_return

  # Rationale: Provides consistency in coding style
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#required-enum-case
  - required_enum_case

  # Rationale: Provides consistency in coding style
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#returning-whitespace
  - return_arrow_whitespace

  # Rationale: Provides consistency in coding style
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#shorthand-operator
  - shorthand_operator

  # Rationale: There should be only XCTestCase per file
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#single-test-class
  - single_test_class

  # Rationale: Provides consistency and clarity in coding style and is less code
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#min-or-max-over-sorted-first-or-last
  - sorted_first_last

  # Rationale: Provides consistency in coding style
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#statement-position
  - statement_position

  # Rationale: Provides cleaniness of code
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#superfluous-disable-command
  - superfluous_disable_command

  # Rationale: Provides consistency in coding style
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#switch-and-case-statement-alignment
  - switch_case_alignment

  # Rationale: Provides consistency in coding style and follows modern practices of the language
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#syntactic-sugar
  - syntactic_sugar

  # Rationale: Provides consistency in coding style and follows modern practices of the language
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#trailing-comma
  - trailing_comma

  # Rationale: Provides consistency in coding style
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#trailing-newline
  - trailing_newline

  # Rationale: Provides consistency in coding style and follows modern practices of the language
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#trailing-semicolon
  - trailing_semicolon

  # Rationale: Provides consistency in coding style and brevity
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#unneeded-break-in-switch
  - unneeded_break_in_switch

  # Rationale: Provides consistency in coding style and brevity
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#unused-control-flow-label
  - unused_control_flow_label

  # Rationale: Provides consistency in coding style and brevity
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#unused-closure-parameter
  - unused_closure_parameter

  # Rationale: Provides consistency in coding style and brevity
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#unused-enumerated
  - unused_enumerated

  # Rationale: Provides consistency in coding style and brevity
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#unused-optional-binding
  - unused_optional_binding

  # Rationale: Avoids issues where the setter is not using the value passed in.
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#unused-setter-value
  - unused_setter_value

  # Rationale: Prevents coder error
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#valid-ibinspectable
  - valid_ibinspectable

  # Rationale: Provides consistency in coding style
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#vertical-parameter-alignment
  - vertical_parameter_alignment

  # Rationale: Provides consistency in coding style
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#vertical-parameter-alignment-on-call
  - vertical_parameter_alignment_on_call

  # Rationale: Provides consistency in coding style
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#vertical-whitespace
  - vertical_whitespace

  # Rationale: Provides consistency in coding style
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#vertical-whitespace-before-closing-braces
  - vertical_whitespace_closing_braces

  # Rationale: Provides consistency in coding style and follows modern practices of the language
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#void-return
  - void_return

  # Rationale: Avoids using weak when it has no effect.
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#weak-computed-property
  - weak_computed_property

  # Rationale: Prevents retain cycles and coder error
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#weak-delegate
  - weak_delegate

  # Rationale: Encourages better documentation
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#xctfail-message
  - xctfail_message

  # Rationale: Provides consistency in coding style
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#yoda-condition-rule
  - yoda_condition

  # Rationale: Encourages documentation
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#todo
  - custom_todo

  # Rationale: Provides consistency in coding style.
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#reduce-boolean
  - reduce_boolean

  # Rationale: == is not used for NSObject comparison, and could lead to confusion.
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#nsobject-prefer-isequal
  - nsobject_prefer_isequal

  # Rationale: Provides consistency of ordering within a type.
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#type-contents-order
  - type_contents_order

  # Rationale: Provides consistency in coding style.
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#unused-capture-list
  - unused_capture_list

  # Rationale: Prevents issues with using unowned.
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#unowned-variable-capture
  - unowned_variable_capture

  # Rationale: Ensures all enums can be switched upon.
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#duplicate-enum-cases
  - duplicate_enum_cases

  # Rationale: Provides consistency in coding style.
  # https://github.com/realm/SwiftLint/blob/master/Rules.md#legacy-multiple
  - legacy_multiple

excluded: # paths to ignore during linting. Takes precedence over `included`.
  - Carthage
  - Pods

attributes:
  always_on_same_line: ["@IBAction", "@IBSegueAction", "@NSManaged", "@discardableResult", "@escaping", "@objc"]

type_contents_order:
  order:
    - case
    - associated_type
    - type_alias
    - subtype
    - [type_property, instance_property, ib_outlet, ib_inspectable]
    - [initializer, deinitializer, type_method, view_life_cycle_method, subscript, other_method, ib_action]

custom_rules:
  custom_todo:
    name: "TODO Violation"
    regex: "(TODO).(?!.*(https&)).(?!.*issue)"
    match_kinds: comment
    message: "TODOs must include a link to the issue."
    severity: warning