Swiftlint: Invalid rule identifier with nested configs and custom rules on SwiftLint 0.42.0

Created on 18 Dec 2020  路  2Comments  路  Source: realm/SwiftLint

New Issue Checklist

Describe the bug

When using custom rules + nested configs, SwiftLint is not recognizing the custom rule identifier if it's referenced in disabled_rules.

Interestingly, it's actually disabling the rule.

Complete output when running SwiftLint, including the stack trace and command used

SwiftLint 0.42

$ swiftlint 
Linting Swift files in current working directory
warning: 'no_hiding_in_strings' is not a valid rule identifier
Valid rule identifiers:
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
comment_spacing
compiler_protocol_init
computed_accessors_order
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
deployment_target
discarded_notification_center_observer
discouraged_direct_init
discouraged_object_literal
discouraged_optional_boolean
discouraged_optional_collection
duplicate_enum_cases
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
ibinspectable_in_extension
identical_operands
identifier_name
implicit_getter
implicit_return
implicitly_unwrapped_optional
inclusive_language
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
no_space_in_method_call
notification_center_detachment
nslocalizedstring_key
nslocalizedstring_require_bundle
nsobject_prefer_isequal
number_separator
object_literal
opening_brace
operator_usage_whitespace
operator_whitespace
optional_enum_case_matching
orphaned_doc_comment
overridden_super_call
override_in_extension
pattern_matching_keywords
prefer_nimble
prefer_self_type_over_type_of_self
prefer_zero_over_explicit_init
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
test_case_accessibility
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
xct_specific_matcher
xctfail_message
yoda_condition
Linting 'A.swift' (1/2)
Linting 'B.swift' (2/2)
/Users/marcelofabri/nested-config-issue/A.swift:1:8: warning: no_hiding_in_strings Violation: Regex matched. (no_hiding_in_strings)
Done linting! Found 1 violation, 0 serious in 2 files.

SwiftLint 0.41.0:

$ swiftlint
Loading configuration from '.swiftlint.yml'
Linting Swift files at paths 
Linting 'A.swift' (1/2)
Linting 'B.swift' (2/2)
/Users/marcelofabri/nested-config-issue/A.swift:1:8: warning: no_hiding_in_strings Violation: Regex matched. (no_hiding_in_strings)
Done linting! Found 1 violation, 0 serious in 2 files.

Environment

  • SwiftLint version (run swiftlint version to be sure)? 0.42.0
  • Installation method used (Homebrew, CocoaPods, building from source, etc)? zip archive
  • Paste your configuration file:
custom_rules:
  no_hiding_in_strings:
    regex: "([nN]inja)"
    match_kinds: string
disabled_rules:
  - no_hiding_in_strings

Yes, see above

  • Which Xcode version are you using (check xcodebuild -version)? 12.2

  • Do you have a sample that shows the issue? Run echo "[string here]" | swiftlint lint --no-cache --use-stdin --enable-all-rules
    to quickly test if your example is really demonstrating the issue. If your example is more
    complex, you can use swiftlint lint --path [file here] --no-cache --enable-all-rules.

nested-config-issue.zip

bug

Most helpful comment

@marcelofabri I will try to fix this ASAP. https://github.com/realm/SwiftLint/issues/3468 seems to be a related issue.

All 2 comments

This was probably introduced by #3058

@marcelofabri I will try to fix this ASAP. https://github.com/realm/SwiftLint/issues/3468 seems to be a related issue.

Was this page helpful?
0 / 5 - 0 ratings