When the indentation_width is enabled, it would give warning on a multiple cases in different lines for switch-case statement:
Sample:
switch enumValue {
case .value1,
.value2:
print("warning above")
case .value3:
print("No warning on this")
}
$ swiftlint lint
file.swift:32:1: warning: Indentation Width Violation: Code should be indented with tabs or 4 spaces, but not both in the same line. (indentation_width)
swiftlint version to be sure)? 0.38.2CocoaPodsexcluded: # paths to ignore during linting. Takes precedence over `included`.
- Carthage
- Pods
opt_in_rules:
- anyobject_protocol
- array_init
- attributes
- block_based_kvo
- class_delegate_protocol
- closing_brace
- closure_body_length
- closure_end_indentation
- closure_parameter_position
- closure_spacing
- collection_alignment
- colon
- comma
- compiler_protocol_init
- conditional_returns_on_newline
- contains_over_filter_count
- contains_over_filter_is_empty
- contains_over_first_not_nil
- contains_over_range_nil_comparison
- control_statement
- convenience_type
- custom_rules
- cyclomatic_complexity
- discarded_notification_center_observer
- discouraged_direct_init
#- discouraged_object_literal
#- discouraged_optional_boolean
#- discouraged_optional_collection
- duplicate_imports
- dynamic_inline
- empty_collection_literal
- empty_count
- empty_enum_arguments
- empty_parameters
- empty_parentheses_with_trailing_closure
- empty_string
- empty_xctest_method
- enum_case_associated_values_count
- expiring_todo
#- explicit_acl
#- explicit_enum_raw_value
- explicit_init
- explicit_self
# - explicit_top_level_acl
#- explicit_type_interface
#- extension_access_modifier
- fallthrough
- fatal_error_message
#- file_header
- file_length
- file_name
- file_name_no_space
#- file_types_order
- first_where
- flatmap_over_map_reduce
- for_where
- force_cast
- force_try
- force_unwrapping
- function_body_length
- function_default_parameter_at_end
- function_parameter_count
- generic_type_name
- identical_operands
- identifier_name
- implicit_getter
- implicit_return
- implicitly_unwrapped_optional
- indentation_width
- inert_defer
- is_disjoint
- joined_default_parameter
- large_tuple
- last_where
- leading_whitespace
- legacy_cggeometry_functions
- legacy_constant
- legacy_constructor
- legacy_hashing
- legacy_multiple
- legacy_nsgeometry_functions
- legacy_random
- let_var_whitespace
- line_length
- literal_expression_end_indentation
- lower_acl_than_parent
- mark
- missing_docs
- modifier_order
- multiline_arguments
- multiline_arguments_brackets
- multiline_function_chains
- multiline_literal_brackets
- multiline_parameters
- multiline_parameters_brackets
- multiple_closures_with_trailing_closure
- nesting
- nimble_operator
#- no_extension_access_modifier
- no_fallthrough_only
- no_grouping_extension
- notification_center_detachment
- number_separator
- nslocalizedstring_key
- object_literal
- opening_brace
- operator_usage_whitespace
- operator_whitespace
- optional_enum_case_matching
- overridden_super_call
#- override_in_extension
- pattern_matching_keywords
- prefer_self_type_over_type_of_self
- prefixed_toplevel_constant
- private_action
- private_outlet
- private_over_fileprivate
- private_unit_test
# - prohibited_interface_builder
- prohibited_super_call
- protocol_property_accessors_order
- quick_discouraged_call
- quick_discouraged_focused_test
- quick_discouraged_pending_test
- raw_value_for_camel_cased_codable_enum
- reduce_boolean
- reduce_into
- redundant_discardable_let
- redundant_nil_coalescing
- redundant_objc_attribute
- redundant_optional_initialization
- redundant_set_access_control
- redundant_string_enum_value
- redundant_type_annotation
- redundant_void_return
# - required_deinit
- required_enum_case
- return_arrow_whitespace
- shorthand_operator
- single_test_class
- sorted_first_last
- sorted_imports
- statement_position
- static_operator
- strict_fileprivate
- strong_iboutlet
- superfluous_disable_command
- switch_case_alignment
- switch_case_on_newline
- syntactic_sugar
- todo
- toggle_bool
- trailing_closure
- trailing_comma
- trailing_newline
- trailing_semicolon
- trailing_whitespace
- type_body_length
#- type_contents_order
- type_name
- unavailable_function
- unneeded_break_in_switch
- unneeded_parentheses_in_closure_argument
- unowned_variable_capture
- untyped_error_in_catch
- unused_capture_list
- unused_closure_parameter
- unused_control_flow_label
- unused_declaration
- unused_enumerated
- unused_import
- unused_optional_binding
- unused_setter_value
- valid_ibinspectable
- vertical_parameter_alignment
- vertical_parameter_alignment_on_call
- vertical_whitespace
- vertical_whitespace_between_cases
- vertical_whitespace_closing_braces
- vertical_whitespace_opening_braces
- void_return
- weak_delegate
- xctfail_message
- xct_specific_matcher
- yoda_condition
# rule parameters
indentation: 4
#conditional_returns_on_newline:
# if_only: true
file_length:
warning: 600
error: 1000
ignore_comment_only_lines: true
cyclomatic_complexity:
ignores_case_statements: true
warning: 10
error: 20
nesting:
type_level:
warning: 6
statement_level:
warning: 6
function_body_length:
warning: 40
error: 100
line_length: 150
type_body_length:
warning: 400
error: 500
large_tuple:
warning: 4
error: 6
identifier_name:
excluded:
- to
- id
- by
- of
- at
- !str on
- x
- y
- L
- mr
- ms
- dr
private_outlet:
allow_private_set: true
allows_public_getter: true
indentation: tabs
multiline_arguments:
only_enforce_after_first_closure_on_first_line: true
# insert yaml contents here
Noxcodebuild -version)? Xcode 11.3echo "[string here]" | swiftlint lint --no-cache --use-stdin --enable-all-rulesswiftlint lint --path [file here] --no-cache --enable-all-rules.switch enumValue {
case .value1,
.value2: // This triggers a violation:
print("warning above")
case .value3:
print("No warning on this")
}
Related, indentation_width also files warnings on the follow,
UINavigationController(nibName: nil,
bundle: nil)
Facing the same thing here
This issue has been automatically marked as stale because it has not had any recent activity. Please comment to prevent this issue from being closed. Thank you for your contributions!
This is still something to address
indentation_width conflicts with several of the the "alignment" rules:
... and possibly more. So you end up with either:
// indentation_width violation
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: LaunchOptions = nil) -> Bool {
or
// vertical_parameter_alignment violation (also, more generally, incorrect formatting by most standards)
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: LaunchOptions = nil) -> Bool {
Tough problem to solve! Perhaps introducing a property to a Rule to define conflicting rules, and the relative priority.
Most helpful comment
Related,
indentation_widthalso files warnings on the follow,